Page 1 of 2 1 2 LastLast
Results 1 to 10 of 14

Thread: Abyssal Underlord data.

  1. #1
    Basic Member igo95862's Avatar
    Join Date
    Aug 2012
    Posts
    3,142

    Abyssal Underlord data.

    Data files
    Spoiler: 

    1). Units

    Spoiler: 

    a). Dota 1
    Spoiler: 

    [N00R]
    auto=_
    abilList=AInv
    heroAbilList=Aamk,A0RA,A01I,A0R0,AIcd
    level=5
    type=undead
    goldcost=250
    stockMax=1
    stockRegen=6
    stockStart=15
    HP=150
    realHP=700
    regenHP=0.25
    regenType=always
    realM=210
    mana0=100
    regenMana=0.01
    def=3
    realdef=2.2
    defType=hero
    spd=305
    bldtm=1
    reptm=1
    sight=1350
    nsight=600
    STR=25
    INT=17
    AGI=12
    STRplus=2.6
    INTplus=2.6
    AGIplus=1.3
    abilTest=6
    Primary=STR
    upgrades=_
    tilesets=*
    preventPlace=_
    requirePlace=_
    collision=24
    race=undead
    prio=9
    threat=1
    valid=1
    deathType=2
    death=2.67
    cargoSize=1
    movetp=foot
    turnRate=0.4
    propWin=60
    orientInterp=1
    targType=ground
    pathTex=_
    points=91
    buffType=_
    nameCount=1
    canFlee=1
    file=units\demon\HeroPitLord\HeroPitLord
    unitSound=HeroPitLord
    name=Custom_N00R
    hideHeroDeathMsg=1
    blend=0.15
    scale=2.5
    scaleBull=1
    maxPitch=10
    maxRoll=10
    elevRad=50
    walk=325
    run=350
    weap1=MetalHeavySlice
    weap2=_
    teamColor=-1
    armor=Stone
    modelScale=0.95
    red=255
    green=255
    blue=255
    uberSplat=_
    unitShadow=Shadow
    buildingShadow=_
    shadowW=170
    shadowH=170
    shadowX=80
    shadowY=80
    shadowOnWater=1
    weapsOn=1
    acquire=600
    castpt=0.6
    castbsw=0.51
    launchZ=60
    impactZ=100
    weapType1=MetalHeavySlice
    targs1=air,debris,ground,item,structure,ward
    showUI1=1
    rangeN1=128
    RngBuff1=250
    atkType1=hero
    weapTp1=normal
    cool1=1.7
    dice1=2
    sides1=4
    dmgplus1=35
    mindmg1=2
    avgdmg1=7
    maxdmg1=12
    dmgpt1=0.45
    backSw1=0.7
    splashTargs1=_
    targCount1=1
    weapType2=_
    targs2=ground,structure,debris,air,item,ward
    showUI2=1
    rangeN2=500
    RngBuff2=250
    atkType2=hero
    weapTp2=missile
    cool2=2.13
    dice2=2
    sides2=4
    mindmg2=2
    avgdmg2=5
    maxdmg2=8
    dmgpt2=0.8
    backSw2=0.7
    splashTargs2=_
    targCount2=1
    Name=Pit Lord
    Propernames=Azgalor
    Tip="Pit Lord"
    Hotkey=
    Ubertip="One of the many regents of Lord Archimonde who became stranded on the physical plane after the Legion fell in Kalimdor, the devil Azgalor's love of destruction allowed him to accept the Lich King's invitation to help lead the Scourge in conquest with few regrets. After all, this Pit Lord is happiest when he conjures fire to scour his opponents from above, roasting them slowly as the dead literally explode from beneath their feet. With such hateful power in the hands of a monster such as this, it's no wonder he inspires so much terror as he roams across the battlefield. |n|n|c00ff0303Strength|r - 25 + 2.6|n|c000042ffAgility|r - 12 + 1.3|n|c000042ffIntelligence|r - 17 + 2.6|n|nLearns Firestorm, Pit of Malice, Atrophy Aura, and |c00ff8000Dark Rift|r.|n|nAttack range of 128 (melee).|nMovement speed of 305."
    Revivetip="Revive Pit Lord"
    Awakentip="Revive Pit Lord"
    Art=ReplaceableTextures\CommandButtons\BTNPitLord. blp
    Buttonpos=3,1
    Requires=
    Requires1=
    Requires2=
    Specialart=Objects\Spawnmodels\Demon\DemonLargeDea thExplode\DemonLargeDeathExplode.mdl
    Attachmentanimprops=large
    ScoreScreenIcon=ReplaceableTextures\CommandButtons \BTNPitLord.blp
    Requirescount=0

    b). Dota 2
    Spoiler: 

    // HERO: Abyssal Underlord
    //================================================== ================================================== =============
    "npc_dota_hero_abyssal_underlord"
    {
    // General
    //-------------------------------------------------------------------------------------------------------------
    "Model" "models/heroes/abyssal_underlord/abyssal_underlord.mdl" // Model.
    "Portrait" "vgui/hud/heroportraits/abyssal_underlord" // Small image for hero selection
    "SoundSet" "Hero_AbyssalUnderlord" // Name of sound set.
    "Enabled" "0"
    "ForceEnable" "0"
    "Role" ""
    "Rolelevels" ""
    "Team" "Bad"
    "HeroID" "108" // unique ID number for this hero. Do not change this once established or it will invalidate collected stats.
    "ModelScale" "1.0"
    "NameAliases" "PitLord,Azgalor"
    "url" "AbyssalUnderlord"

    // Abilities
    //-------------------------------------------------------------------------------------------------------------
    "Ability1" "abyssal_underlord_firestorm"
    "Ability2" "abyssal_underlord_pit_of_malice"
    "Ability3" "abyssal_underlord_atrophy_aura"
    "Ability4" "abyssal_underlord_dark_rift"
    "Ability5" "abyssal_underlord_cancel_dark_rift"
    "Ability6" "attribute_bonus"
    "AbilityLayout" "4"

    // Armor
    //-------------------------------------------------------------------------------------------------------------
    "ArmorPhysical" "2.0" // Physical protection.

    // Attack
    //-------------------------------------------------------------------------------------------------------------
    "AttackCapabilities" "DOTA_UNIT_CAP_MELEE_ATTACK"
    "AttackDamageMin" "37" // Damage range min.
    "AttackDamageMax" "43" // Damage range max.
    "AttackRate" "1.7" // Speed of attack.
    "AttackAnimationPoint" "0.45" // Normalized time in animation cycle to attack.
    "AttackAcquisitionRange" "600" // Range within a target can be acquired.
    "AttackRange" "128" // Range within a target can be attacked.

    // Attributes
    //-------------------------------------------------------------------------------------------------------------
    "AttributePrimary" "DOTA_ATTRIBUTE_STRENGTH"
    "AttributeBaseStrength" "25" // Base strength
    "AttributeStrengthGain" "2.6" // Strength bonus per level.
    "AttributeBaseAgility" "12" // Base agility
    "AttributeAgilityGain" "1.3" // Agility bonus per level.
    "AttributeBaseIntelligence" "17" // Base intelligence
    "AttributeIntelligenceGain" "2.6" // Intelligence bonus per level.

    // Movement
    //-------------------------------------------------------------------------------------------------------------
    "MovementSpeed" "305" // Speed.
    "MovementTurnRate" "0.6" // Turning rate.

    "HealthBarOffset" "200"

    "ParticleFile" "particles/units/heroes/hero_abyssal_underlord.pcf"
    "GameSoundsFile" "scripts/game_sounds_heroes/game_sounds_abyssal_underlord.txt"
    "VoiceFile" "scripts/voscripts/game_sounds_vo_abyssal_underlord.txt"

    // Vision
    //-------------------------------------------------------------------------------------------------------------
    "VisionDaytimeRange" "1800" // Range of vision during day light.
    "VisionNighttimeRange" "800" // Range of vision at night time.

    }



    2). Spells

    Spoiler: 

    a). Dota 1

    Firestorm
    Spoiler: 

    [A01I]
    code=ANrf
    checkDep=1
    levels=4
    reqLevel=1
    targs1=enemies,neutral
    Dur1=2
    HeroDur1=2
    Cool1=14
    Cost1=100
    Area1=400
    Rng1=750
    DataB1=1
    DataC1=1
    DataD1=1
    DataF1=99999
    BuffID1=BNrd,BNrf
    EfctID1=XErf
    targs2=enemies,neutral
    Dur2=2
    HeroDur2=2
    Cool2=14
    Cost2=110
    Area2=400
    Rng2=750
    DataB2=1
    DataC2=1
    DataD2=1
    DataF2=99999
    BuffID2=BNrd,BNrf
    EfctID2=XErf
    targs3=enemies,neutral
    Dur3=2
    HeroDur3=2
    Cool3=14
    Cost3=120
    Area3=400
    Rng3=750
    DataB3=1
    DataC3=1
    DataD3=1
    DataF3=99999
    BuffID3=BNrd,BNrf
    EfctID3=XErf
    targs4=enemies,neutral
    Dur4=2
    HeroDur4=2
    Cool4=14
    Cost4=130
    Area4=400
    Rng4=750
    DataB4=1
    DataC4=1
    DataD4=1
    DataF4=99999
    BuffID4=BNrd,BNrf
    EfctID4=XErf
    Art=ReplaceableTextures\CommandButtons\BTNFire.blp
    Buttonpos=0,2
    Casterart=
    Order=rainoffire
    Animnames=spell,looping
    Researchart=ReplaceableTextures\CommandButtons\BTN Fire.blp
    Researchbuttonpos=0,0
    Name="Firestorm"
    Tip="|cffffcc00F|rirestorm - |cffffcc00Level 1|r","|cffffcc00F|rirestorm - |cffffcc00Level 2|r","|cffffcc00F|rirestorm - |cffffcc00Level 3|r","|cffffcc00F|rirestorm - |cffffcc00Level 4|r"
    Ubertip="Calls down waves of fire that damage units in an area. Each wave deals 25 damage and 5 dps for 2 seconds. |nLasts for 6 waves. |n|n|cff99ccffCooldown: |r 14","Calls down waves of fire that damage units in an area. Each wave deals 40 damage and 10 dps for 2 seconds. |nLasts for 6 waves. |n|n|cff99ccffCooldown: |r 14","Calls down waves of fire that damage units in an area. Each wave deals 55 damage and 15 dps for 2 seconds. |nLasts for 6 waves. |n|n|cff99ccffCooldown: |r 14","Calls down waves of fire that damage units in an area. Each wave deals 70 damage and 20 dps for 2 seconds. |nLasts for 6 waves. |n|n|cff99ccffCooldown: |r 14"
    Hotkey=F
    Researchtip="Learn |cffffcc00F|rirestorm - |cffffcc00Level %d|r"
    Researchubertip="Calls down 6 waves of fire that damage enemy units in an area and continues to burn them for 2 seconds. |n|n|cffffcc00Level 1|r - 25 wave damage, 5 dps. |n|cffffcc00Level 2|r - 40 wave damage, 10 dps. |n|cffffcc00Level 3|r - 55 wave damage, 15 dps.|n|cffffcc00Level 4|r - 70 wave damage, 20 dps. |n|n|cff99ccffCooldown: |r 14 |n|cff99ccffManacost: |r 100/110/120/130"
    Researchhotkey=F

    Pit of Malice
    Spoiler: 

    [A0RA]
    code=AHfs
    checkDep=1
    levels=4
    reqLevel=1
    targs1=debris,enemies,ground,neutral
    Cool1=24
    Cost1=100
    Area1=275
    Rng1=750
    DataD1=1
    DataF1=99999
    BuffID1=B08G
    EfctID1=X003
    targs2=debris,enemies,ground,neutral
    Cool2=21
    Cost2=115
    Area2=275
    Rng2=750
    DataD2=1
    DataF2=99999
    BuffID2=B08G
    EfctID2=X003
    targs3=debris,enemies,ground,neutral
    Cool3=18
    Cost3=130
    Area3=275
    Rng3=750
    DataD3=1
    DataF3=99999
    BuffID3=B08G
    EfctID3=X003
    targs4=debris,enemies,ground,neutral
    Cool4=15
    Cost4=145
    Area4=275
    Rng4=750
    DataD4=1
    DataF4=99999
    BuffID4=B08G
    EfctID4=X003
    Art=ReplaceableTextures\CommandButtons\BTNGrave.bl p
    Buttonpos=1,2
    Specialart=
    Order=flamestrike
    Animnames=spell,channel
    Researchart=ReplaceableTextures\CommandButtons\BTN Grave.blp
    Researchbuttonpos=1,0
    UnButtonpos=1,0
    Effectart=
    Name="Pit of Malice"
    Tip="Pi|cffffcc00t|r of Malice - |cffffcc00Level 1|r","Pi|cffffcc00t|r of Malice - |cffffcc00Level 2|r","Pi|cffffcc00t|r of Malice - |cffffcc00Level 3|r","Pi|cffffcc00t|r of Malice - |cffffcc00Level 4|r"
    Ubertip="A deadly pit is conjured at target location. Any unit that enters it becomes corrupted with malicious forces, taking 100 damage and is unable to move for 1 second. Creates 5 corpses in the area. |n|n|cff99ccffCooldown: |r 24","A deadly pit is conjured at target location. Any unit that enters it becomes corrupted with malicious forces, taking 100 damage and is unable to move for 1.5 seconds. Creates 5 corpses in the area. |n|n|cff99ccffCooldown: |r 21","A deadly pit is conjured at target location. Any unit that enters it becomes corrupted with malicious forces, taking 100 damage and is unable to move for 2 seconds. Creates 5 corpses in the area. |n|n|cff99ccffCooldown: |r 18","A deadly pit is conjured at target location. Any unit that enters it becomes corrupted with malicious forces, taking 100 damage and is unable to move for 2.5 seconds. Creates 5 corpses in the area. |n|n|cff99ccffCooldown: |r 15"
    Hotkey=T
    Researchtip="Learn Pi|cffffcc00t|r of Malice - |cffffcc00Level %d|r"
    Researchubertip="A deadly pit is conjured at target location. Any unit that enters it becomes corrupted with malicious forces, taking 100 damage and becoming unable to move for some time. Creates corpses inside the pit. |n|n|cffffcc00Level 1|r - 1 second |n|cffffcc00Level 2|r - 1.5 seconds |n|cffffcc00Level 3|r - 2 seconds |n|cffffcc00Level 4|r - 2.5 seconds |n|n|cff99ccffCooldown: |r 24/21/18/15 |n|cff99ccffManacost: |r 100/115/130/145"
    Researchhotkey="T"

    Spoiler: 

    [A0RI]
    code=Aens
    checkDep=1
    levels=4
    reqLevel=1
    targs1=air,enemies,friend,ground,neutral
    Dur1=1
    HeroDur1=1
    Rng1=620
    DataA1=0.6
    DataC1=128
    BuffID1=B08F,B08E
    targs2=air,enemies,friend,ground,neutral
    Dur2=1.5
    HeroDur2=1.5
    Rng2=630
    DataA2=0.6
    DataC2=128
    BuffID2=B08F,B08E
    targs3=air,enemies,friend,ground,neutral
    Dur3=2
    HeroDur3=2
    Rng3=640
    DataA3=0.6
    DataC3=128
    BuffID3=B08F,B08E
    targs4=air,enemies,friend,ground,neutral
    Dur4=2.5
    HeroDur4=2.5
    Rng4=650
    DataA4=0.6
    DataC4=128
    BuffID4=B08F,B08E
    Art=ReplaceableTextures\CommandButtons\BTNEnsnare. blp
    Buttonpos=1,2
    Order=ensnare
    Requires=
    Missileart=
    Missilespeed=1500
    MissileHoming=1
    Researchbuttonpos=1,0
    ResearchArt=ReplaceableTextures\CommandButtons\BTN Ensnare.blp
    Name="Cage"
    Tip=""
    Ubertip=""
    Hotkey=E
    Researchtip="Learn |cffffcc00E|rnsnare - [|cffffcc00Level %d|r]"
    Researchubertip="Entraps an enemy unit in a net, rendering the unit unable to move.|n|n|cffffcc00Level 1|r - Lasts 2 seconds. |n|cffffcc00Level 2|r - Lasts 3 seconds.|n|cffffcc00Level 3|r - Lasts 4 seconds.|n|cffffcc00Level 4|r - Lasts 5 seconds. |n|n|cff99ccffCooldown: |r 14 seconds."
    Researchhotkey="E"


    Atrophy Aura
    Spoiler: 

    [AIcd]
    code=AOac
    levels=4
    reqLevel=1
    targs1=air,enemies,ground
    Area1=900
    DataA1=-0.18
    DataB1=1
    DataC1=1
    BuffID1=B01L
    targs2=air,enemies,ground
    Area2=900
    DataA2=-0.26
    DataB2=1
    DataC2=1
    BuffID2=B01L
    targs3=air,enemies,ground
    Area3=900
    DataA3=-0.34
    DataB3=1
    DataC3=1
    BuffID3=B01L
    targs4=air,enemies,ground
    Area4=900
    DataA4=-0.42
    DataB4=1
    DataC4=1
    BuffID4=B01L
    Art=ReplaceableTextures\PassiveButtons\PASBTNGnoll CommandAura.blp
    Buttonpos=2,2
    Targetart=Abilities\Spells\Orc\WarDrums\DrumsCaste rHeal.mdl
    Researchbuttonpos=2,0
    UnButtonpos=1,0
    ResearchArt=ReplaceableTextures\PassiveButtons\PAS BTNShadeTrueSight.blp
    TargetArt=Abilities\Spells\Undead\VampiricAura\Vam piricAura.mdl
    Targetattach=origin
    Name="Atrophy Aura"
    Tip="Atrophy Aura - [|cffffcc00Level 1|r]","Atrophy Aura - [|cffffcc00Level 2|r]","Atrophy Aura - [|cffffcc00Level 3|r]","Atrophy Aura - [|cffffcc00Level 4|r]"
    Ubertip="Weakens enemy units' attacks by 18% in a 900 AOE. If an enemy unit dies under this aura, you gain 5 bonus damage for 30 seconds. 30 for heroes.","Weakens enemy units' attacks by 26% in a 900 AOE. If an enemy unit dies under this aura, you gain 5 bonus damage for 35 seconds. 30 for heroes.","Weakens enemy units' attacks by 34% in a 900 AOE. If an enemy unit dies under this aura, you gain 5 bonus damage for 40 seconds. 30 for heroes.","Weakens enemy units' attacks by 42% in a 900 AOE. If an enemy unit dies under this aura, you gain 5 bonus damage for 45 seconds. 30 for heroes."
    Researchtip="Learn At|cffffcc00r|rophy Aura- [|cffffcc00Level %d|r]"
    Researchubertip="A 900 range aura that makes the might of an enemy leak out in the presence of Pit Lord. If an enemy unit dies under this aura, you gain temporarily gain 5 bonus damage. 30 for heroes. |n|n|cffffcc00Level 1|r - 18% damage reduction. |n|cffffcc00Level 2|r - 26% damage reduction. |n|cffffcc00Level 3|r - 34% damage reduction. |n|cffffcc00Level 4|r - 42% damage reduction. "
    Researchhotkey="R"

    Dark Rift
    Spoiler: 

    [A0R0]
    code=ANcl
    checkDep=1
    levels=3
    reqLevel=6
    levelSkip=5
    targs1=allies,invulnerable,vulnerable
    Cool1=130
    Cost1=75
    Rng1=99999
    DataB1=3
    DataC1=1
    DataD1=0.98
    DataF1=channel
    targs2=allies,invulnerable,vulnerable
    Cool2=130
    Cost2=150
    Rng2=99999
    DataB2=3
    DataC2=1
    DataD2=0.98
    DataF2=channel
    targs3=allies,invulnerable,vulnerable
    Cool3=130
    Cost3=225
    Rng3=99999
    DataB3=3
    DataC3=1
    DataD3=0.98
    DataF3=channel
    targs4=_
    Rng4=500
    DataA4=180
    DataD4=0.98
    DataE4=1
    Art=ReplaceableTextures\CommandButtons\BTNDarkPort al.blp
    Buttonpos=3,2
    Casterart=
    Casterattach=
    Targetart=
    Order=channel
    Animnames=stand,channel
    Researchbuttonpos=3,0
    Effectart=
    ResearchArt=ReplaceableTextures\CommandButtons\BTN DarkPortal.blp
    Targetattach=origin
    Name="Dark Rift"
    Tip="|cffffcc00D|rark Rift - |cffffcc00Level 1|r","|cffffcc00D|rark Rift - |cffffcc00Level 2|r","|cffffcc00D|rark Rift - |cffffcc00Level 3|r"
    Ubertip="Opens rifts that pass through the netherworld at his present position and a target unit simultaneously. Teleports your hero and nearby allied heroes through the rift. Can target allied buildings or units. 6 second cast delay. |n|n|cff99ccffCooldown: |r 130","Opens rifts that pass through the netherworld at his present position and a target unit simultaneously. Teleports your hero and nearby allied heroes through the rift. Can target allied buildings or units. 5 second cast delay. |n|n|cff99ccffCooldown: |r 130 ","Opens rifts that pass through the netherworld at his present position and a target unit simultaneously. Teleports your hero and nearby allied heroes through the rift. Can target allied buildings or units. 4 second cast delay. |n|n|cff99ccffCooldown: |r 130 "
    Hotkey=D
    Researchtip="Learn |cffffcc00D|rark Rift - |cffffcc00Level %d|r"
    Researchubertip="Opens rifts that pass through the netherworld at his present position and a target unit simultaneously. Teleports your hero and nearby allied heroes through the rift. |n|n|cffffcc00Level 1|r - 6 Second Casting Delay. Units or Buildings. |n|cffffcc00Level 2|r - 5 Second Casting Delay. Units or Buildings. |n|cffffcc00Level 3|r - 4 Second Casting Delay. Units or Buildings. |n|n|cff99ccffCooldown: |r 130 |n|cff99ccffManacost: |r 75/150/225"
    Researchhotkey="D"

    Dark Rift (cancel)
    Spoiler: 

    [A2MB]
    code=Absk
    checkDep=1
    levels=1
    reqLevel=6
    levelSkip=5
    targs1=_
    Dur1=0.01
    HeroDur1=0.01
    Cool1=1
    BuffID1=B024,BEia
    targs2=_
    Dur2=0.01
    HeroDur2=0.01
    Cool2=1
    Cost2=110
    BuffID2=B024,BEia
    targs3=_
    Dur3=0.01
    HeroDur3=0.01
    Cool3=1
    Cost3=110
    BuffID3=B024,BEia
    targs4=_
    Dur4=10.00
    HeroDur4=10.00
    Cool4=20.00
    Cost4=100
    BuffID4=B02H,BEia
    Art=ReplaceableTextures\CommandButtons\BTNCancel.b lp
    Buttonpos=3,2
    Order=berserk
    Researchbuttonpos=3,0
    ResearchArt=ReplaceableTextures\CommandButtons\BTN Cancel.blp
    Name="Dark Rift"
    Tip="Deactivate |cffffcc00D|rark Rift","Activate Pulse No|cffffcc00v|ra - [|cffffcc00Level 2|r]","Activate Pulse No|cffffcc00v|ra - [|cffffcc00Level 3|r]","Become En|cffffcc00r|raged - [|cffffcc00Level 4|r]"
    Ubertip="Deactivates the casting of Dark Rift.","Deactivate Pulse Nova to stop draining mana.","Deactivate Pulse Nova to stop draining mana.","Become Enraged for 10 seconds, dealing additional damage equal to 4% of Ulfsaar's life."
    Hotkey=D
    Researchtip="Learn Pulse No|cffffcc00v|ra - [|cffffcc00Level %d|r]"
    Researchubertip="Summons a Pulse Nova every second to damage nearby enemies. |n|n|cffffcc00Level 1|r - 66 damage per nova. |n|cffffcc00Level 2|r - 100 damage per nova. |n|cffffcc00Level 3|r - 144 damage per nova. |n|n|c00fffc01Scepter Upgradeable: Increases damage.|r"
    Researchhotkey="V"


    b). Dota 2

    Firestorm
    Spoiler: 

    // Abyssal Underlord: Firestorm
    //================================================== ================================================== =============
    "abyssal_underlord_firestorm"
    {
    // General
    //-------------------------------------------------------------------------------------------------------------
    "ID" "5613" // unique ID number for this ability. Do not change this once established or it will invalidate collected stats.
    "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE"
    "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL"

    "AbilityCastRange" "750"
    "AbilityCastPoint" "0.6"

    // Time
    //-------------------------------------------------------------------------------------------------------------
    "AbilityCooldown" "14.0"

    // Cost
    //-------------------------------------------------------------------------------------------------------------
    "AbilityManaCost" "100 110 120 130"

    // Special
    //-------------------------------------------------------------------------------------------------------------
    "AbilitySpecial"
    {
    "01"
    {
    "var_type" "FIELD_INTEGER"
    "radius" "400"
    }
    "02"
    {
    "var_type" "FIELD_FLOAT"
    "wave_duration" "7.0"
    }
    "03"
    {
    "var_type" "FIELD_INTEGER"
    "wave_count" "6"
    }
    "04"
    {
    "var_type" "FIELD_INTEGER"
    "wave_damage" "25 40 55 70"
    }
    "05"
    {
    "var_type" "FIELD_FLOAT"
    "wave_interval" "1.0"
    }
    "06"
    {
    "var_type" "FIELD_INTEGER"
    "burn_damage" "5 10 15 20"
    }
    "07"
    {
    "var_type" "FIELD_FLOAT"
    "burn_interval" "1.0"
    }
    "08"
    {
    "var_type" "FIELD_FLOAT"
    "burn_duration" "2.0"
    }
    "09"
    {
    "var_type" "FIELD_FLOAT"
    "first_wave_delay" "0.9"
    }
    }
    }

    Pit of Malice
    Spoiler: 

    // Abyssal Underlord: Pit of Malice
    //================================================== ================================================== =============
    "abyssal_underlord_pit_of_malice"
    {
    // General
    //-------------------------------------------------------------------------------------------------------------
    "ID" "5614" // unique ID number for this ability. Do not change this once established or it will invalidate collected stats.
    "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_AOE"
    "AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL"

    "AbilityCastRange" "800"
    "AbilityCastPoint" "0.6"

    // Time
    //-------------------------------------------------------------------------------------------------------------
    "AbilityCooldown" "24.0 21.0 18.0 15.0"

    // Cost
    //-------------------------------------------------------------------------------------------------------------
    "AbilityManaCost" "100 115 130 145"

    // Special
    //-------------------------------------------------------------------------------------------------------------
    "AbilitySpecial"
    {
    "01"
    {
    "var_type" "FIELD_INTEGER"
    "radius" "275"
    }
    "02"
    {
    "var_type" "FIELD_FLOAT"
    "pit_duration" "7.0"
    }
    "03"
    {
    "var_type" "FIELD_FLOAT"
    "pit_interval" "0.5"
    }
    "04"
    {
    "var_type" "FIELD_INTEGER"
    "pit_damage" "100"
    }
    "05"
    {
    "var_type" "FIELD_FLOAT"
    "ensnare_duration" "1.0 1.5 2.0 2.5"
    }
    }
    }

    Atrophy Aura
    Spoiler: 

    // Abyssal Underlord: Atrophy Aura
    //================================================== ================================================== =============
    "abyssal_underlord_atrophy_aura"
    {
    // General
    //-------------------------------------------------------------------------------------------------------------
    "ID" "5615" // 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_AURA"
    "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY"


    // Casting
    //-------------------------------------------------------------------------------------------------------------
    "AbilityCastRange" "900"

    "AbilitySpecial"
    {
    "01"
    {
    "var_type" "FIELD_INTEGER"
    "radius" "900"
    }
    "02"
    {
    "var_type" "FIELD_INTEGER"
    "damage_reduction_pct" "18 26 34 42"
    }
    "03"
    {
    "var_type" "FIELD_INTEGER"
    "bonus_damage_from_creep" "5"
    }
    "04"
    {
    "var_type" "FIELD_INTEGER"
    "bonus_damage_from_hero" "30"
    }
    "05"
    {
    "var_type" "FIELD_FLOAT"
    "bonus_damage_duration" "30.0 35.0 40.0 45.0"
    }
    }
    }

    Dark Rift
    Spoiler: 

    // Abyssal Underlord: Dark Rift
    //================================================== ================================================== =============
    "abyssal_underlord_dark_rift"
    {
    // General
    //-------------------------------------------------------------------------------------------------------------
    "ID" "5616"
    "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_UNIT_TARGET"
    "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE"
    "AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_FRIENDLY"
    "AbilityUnitTargetType" "DOTA_UNIT_TARGET_BUILDING"
    "AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_INVULNERABLE"


    "AbilityCastRange" "0"
    "AbilityCastPoint" "0.6"

    // Time
    //-------------------------------------------------------------------------------------------------------------
    "AbilityCooldown" "130.0"

    // Cost
    //-------------------------------------------------------------------------------------------------------------
    "AbilityManaCost" "75 150 225"


    "AbilitySpecial"
    {
    "01"
    {
    "var_type" "FIELD_INTEGER"
    "radius" "450"
    }
    "02"
    {
    "var_type" "FIELD_FLOAT"
    "teleport_delay" "6.0 5.0 4.0"
    }
    }
    }

    Dark Rift (cancel)
    Spoiler: 

    // Abyssal Underlord: Cancel Dark Rift
    //================================================== ================================================== =============
    "abyssal_underlord_cancel_dark_rift"
    {
    // General
    //-------------------------------------------------------------------------------------------------------------
    "ID" "5617" // unique ID number for this ability. Do not change this once established or it will invalidate collected stats.
    "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE | DOTA_ABILITY_BEHAVIOR_HIDDEN | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK"
    "AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE"
    "MaxLevel" "1"

    // Casting
    //-------------------------------------------------------------------------------------------------------------
    "AbilityCastPoint" "0.0 0.0 0.0 0.0"
    }



    II. Few bugs you can see from data files.

    1). Abyssal Underlord turn rate is too fast

    Dota 1: 0.4

    Dota 2: 0.6

    2). Pit of Malice cast range is too big

    Dota 1: 750

    Dota 2: 800

    3). Dark Rift can't target lane creeps

    Dota 1: can target lane creeps (but not hero controlled)

    Dota 2: can only target buildings

    How to fix: add DOTA_UNIT_TARGET_CREEP | DOTA_UNIT_TARGET_MECHANICAL flags to "AbilityUnitTargetType" (keep in mind that hero controlled creeps are not valid targets)

    4). Dark Rift cancel interrupts

    Dota 1: based on "Berserk" does not interrupt channeling

    Dota 2: Has no DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL flag. Will interrupt

    5). Teleportation delay is too big

    Dota 1: 5/4/3

    Explanation

    Dota 2: 6/5/4

    III. Table of status effects interactions.
    Skill/Hero
    Magic Immunity
    Linken Sphere Purge Dispel Cyclone and invulnerability Banish Fog of War Invisibility Disjointness Doom
    Abyssal Underlord
    Firestorm
    Blocked by Magic immunity
    Burn will Not be dispelled by magic immunity (still won't deal damage)
    Not Blocked Burn cannot be purged Burn can be dispelled by Dark Pact, Borrowed Time and Aphotic shield. Does not affect invulnerable units
    Becoming invulnerable will NOT dispel burn
    Does not affect banished units. Affects units in Fog of War
    Gives no vision
    Affects invisible units - -
    Pit of Malice
    Disable will go through magic immunity
    Cannot be dispelled by magic immunity
    Not blocked Cannot be Purged Can be dispelled by Dark Pact, Borrowed Time, Aphotic Shield... Disabled enemies cannot become cycloned.
    Invulnerable units will not be affected then they become vulnerable
    Banished enemies will get affected then they become vulnerable Affects units in fog
    No vision
    Affects invisible units
    Will display the effect on invisible units
    - -
    Atrophy Aura
    Works throught magic immunity - - - Does not affect invulnerable units. - Affects units in fog of war Affects invisible units - Not disabled
    Dark Rift
    Teleports magic immune allies - Cannot be purged - Cycloned and Invulnerable allies will be teleported. Will not teleport banished units Cannot be seen if Abyssal Underlord in fog of war Graphical Effect can be seen if Abyssal Underlord is invisible. - Not stopped by Doom

    IV. Few aspects:

    Dark Rift can't target player controlled units. Can teleport only heroes and meepo clones. Illusions, herolike creeps and summoned units can't be teleported.

    Atrophy Aura does not give bonus damage dying illusions

    V. JASS code

    Spoiler: 

    elseif loc_integer01==91 then



    call ExecuteFunc("Func3289") Dark rift
    Spoiler: 

    function Func3289 takes nothing returns nothing
    local trigger loc_trigger01=CreateTrigger()
    call Func0175(loc_trigger01,EVENT_PLAYER_UNIT_SPELL_CAS T)
    call TriggerAddCondition(loc_trigger01,Condition(functi on Func3287))
    set loc_trigger01=CreateTrigger()
    call Func0175(loc_trigger01,EVENT_PLAYER_UNIT_SPELL_EFF ECT)
    call TriggerAddCondition(loc_trigger01,Condition(functi on Func3288))
    set loc_trigger01=null
    call Func0234('h094')
    call Func0234('h095')
    call Func0234('h096')
    endfunction

    function Func3287 takes nothing returns boolean
    if GetSpellAbilityId()=='A0R0' then
    call Func3286()
    endif
    return false
    endfunction

    function Func3288 takes nothing returns boolean
    if GetSpellAbilityId()=='A0R0' then
    call Func3285(GetTriggerUnit())
    endif
    return false
    endfunction


    function Func3285 takes unit loc_unit01 returns nothing
    local trigger loc_trigger01=CreateTrigger()
    local integer loc_integer01=GetHandleId(loc_trigger01)
    local unit loc_unit02=GetSpellTargetUnit()
    local real loc_real01
    local real loc_real02
    local unit loc_unit03
    if loc_unit02==null then
    set loc_unit02=Func3284(loc_unit01)
    endif
    if loc_unit02==null then
    call Func0119(GetOwningPlayer(loc_unit01),GetObjectName ('n03H'))
    return
    endif
    call SetPlayerAbilityAvailable(GetOwningPlayer(loc_unit 01),'A0R0',false)
    call SetPlayerAbilityAvailable(GetOwningPlayer(loc_unit 01),'A2MB',true)
    call Func0190(loc_unit01,'A2MB')
    call TriggerRegisterTimerEvent(loc_trigger01,6-GetUnitAbilityLevel(loc_unit01,'A0R0'),false)
    call TriggerRegisterUnitEvent(loc_trigger01,loc_unit02, EVENT_UNIT_DEATH)
    call TriggerRegisterUnitEvent(loc_trigger01,loc_unit01, EVENT_UNIT_SPELL_EFFECT)
    call TriggerAddCondition(loc_trigger01,Condition(functi on Func3282))
    call SaveEffectHandle(hashtable001,(loc_integer01),(32) ,(AddSpecialEffectTarget("war3mapImported\\DarkHan ds.mdl",loc_unit02,"overhead")))
    call SaveUnitHandle(hashtable001,(loc_integer01),(2),(l oc_unit01))
    call SaveUnitHandle(hashtable001,(loc_integer01),(17),( loc_unit02))
    call UnitAddType(loc_unit02,UNIT_TYPE_PEON)
    set loc_trigger01=CreateTrigger()
    set loc_integer01=GetHandleId(loc_trigger01)
    call TriggerRegisterTimerEvent(loc_trigger01,.03,true)
    call TriggerRegisterUnitEvent(loc_trigger01,loc_unit01, EVENT_UNIT_SPELL_EFFECT)
    call TriggerAddCondition(loc_trigger01,Condition(functi on Func3279))
    call SaveInteger(hashtable001,(loc_integer01),(5),(GetU nitAbilityLevel(loc_unit01,'A0R0')))
    call SaveUnitHandle(hashtable001,(loc_integer01),(2),(l oc_unit01))
    set loc_unit03=CreateUnit(GetOwningPlayer(loc_unit01), 'h098',GetUnitX(loc_unit01),GetUnitY(loc_unit01),0 )
    call SaveUnitHandle(hashtable001,(loc_integer01),(393), (loc_unit03))
    call ShowUnit(loc_unit03,false)
    set loc_trigger01=null
    set loc_unit02=null
    endfunction

    function Func3286 takes nothing returns nothing
    local unit loc_unit01=GetSpellTargetUnit()
    local unit loc_unit02=GetTriggerUnit()
    if loc_unit01!=null then
    if IsUnitAlly(loc_unit01,GetOwningPlayer(loc_unit02)) ==false then
    call Func0122(loc_unit02)
    call Func0119(GetOwningPlayer(loc_unit02),GetObjectName ('n041'))
    elseif GetUnitAbilityLevel(loc_unit02,'A0R0')>0 and Func1219(loc_unit01)==false then
    call Func0122(loc_unit02)
    call Func0119(GetOwningPlayer(loc_unit02),GetObjectName ('n041'))
    endif
    endif
    if loc_unit01==null then
    set loc_unit01=Func3284(loc_unit02)
    endif
    if loc_unit01==null then
    call Func0122(loc_unit02)
    call Func0119(GetOwningPlayer(loc_unit02),GetObjectName ('n040'))
    endif
    set loc_unit01=null
    set loc_unit02=null
    endfunction

    function Func3284 takes unit loc_unit01 returns unit
    local location loc_location01
    local group loc_group01
    local real loc_real01
    local real loc_real02
    set loc_location01=GetSpellTargetLoc()
    set loc_real01=GetLocationX(loc_location01)
    set loc_real02=GetLocationY(loc_location01)
    set loc_group01=Func0030()
    set integer022=GetUnitAbilityLevel(loc_unit01,'A0R0')
    set unit124=null
    set real009=9999
    set real010=loc_real01
    set real011=loc_real02
    call GroupEnumUnitsInRange(loc_group01,loc_real01,loc_r eal02,4000,Condition(function Func3283))
    call Func0029(loc_group01)
    call RemoveLocation(loc_location01)
    set loc_location01=null
    set loc_group01=null
    return unit124
    endfunction



    function Func3282 takes nothing returns boolean
    local trigger loc_trigger01=GetTriggeringTrigger()
    local integer loc_integer01=GetHandleId(loc_trigger01)
    local unit loc_unit01=(LoadUnitHandle(hashtable001,(loc_integ er01),(2)))
    local unit loc_unit02=(LoadUnitHandle(hashtable001,(loc_integ er01),(17)))
    call DestroyEffect((LoadEffectHandle(hashtable001,(loc_ integer01),(32))))
    if GetTriggerEventId()==EVENT_UNIT_DEATH or loc_unit02==null or Func0191(loc_unit02)then
    call Func0035(loc_trigger01)
    call FlushChildHashtable(hashtable001,(loc_integer01))
    call UnitRemoveType(loc_unit02,UNIT_TYPE_PEON)
    call SetPlayerAbilityAvailable(GetOwningPlayer(loc_unit 01),'A0R0',true)
    call SetPlayerAbilityAvailable(GetOwningPlayer(loc_unit 01),'A2MB',false)
    call Func0119(GetOwningPlayer(loc_unit01),GetObjectName ('n03F'))
    elseif loc_unit01==null or Func0191(loc_unit01)then
    call Func0035(loc_trigger01)
    call FlushChildHashtable(hashtable001,(loc_integer01))
    call UnitRemoveType(loc_unit02,UNIT_TYPE_PEON)
    call Func0119(GetOwningPlayer(loc_unit01),GetObjectName ('n03G'))
    call SetPlayerAbilityAvailable(GetOwningPlayer(loc_unit 01),'A0R0',true)
    call SetPlayerAbilityAvailable(GetOwningPlayer(loc_unit 01),'A2MB',false)
    elseif GetTriggerEventId()==EVENT_UNIT_SPELL_EFFECT then
    if GetSpellAbilityId()=='A2MB' then
    call Func0035(loc_trigger01)
    call FlushChildHashtable(hashtable001,(loc_integer01))
    call UnitRemoveType(loc_unit02,UNIT_TYPE_PEON)
    call SetPlayerAbilityAvailable(GetOwningPlayer(loc_unit 01),'A0R0',true)
    call SetPlayerAbilityAvailable(GetOwningPlayer(loc_unit 01),'A2MB',false)
    endif
    else
    call Func0035(loc_trigger01)
    call FlushChildHashtable(hashtable001,(loc_integer01))
    call UnitRemoveType(loc_unit02,UNIT_TYPE_PEON)
    call SetPlayerAbilityAvailable(GetOwningPlayer(loc_unit 01),'A0R0',true)
    call SetPlayerAbilityAvailable(GetOwningPlayer(loc_unit 01),'A2MB',false)
    call Func3281(loc_unit01,loc_unit02)
    endif
    set loc_trigger01=null
    set loc_unit01=null
    set loc_unit02=null
    return false
    endfunction

    function Func3279 takes nothing returns boolean
    local trigger loc_trigger01=GetTriggeringTrigger()
    local integer loc_integer01=GetHandleId(loc_trigger01)
    local unit loc_unit01=(LoadUnitHandle(hashtable001,(loc_integ er01),(2)))
    local unit loc_unit02=(LoadUnitHandle(hashtable001,(loc_integ er01),(393)))
    local integer loc_integer02=(LoadInteger(hashtable001,(loc_integ er01),(5)))
    local integer loc_integer03=90
    local integer loc_integer04=(LoadInteger(hashtable001,(loc_integ er01),(34)))
    if GetTriggerEventId()==EVENT_UNIT_SPELL_EFFECT and GetSpellAbilityId()=='A2MB' then
    call KillUnit(loc_unit02)
    call Func0035(loc_trigger01)
    call FlushChildHashtable(hashtable001,(loc_integer01))
    else
    set loc_integer04=loc_integer04+1
    call SaveInteger(hashtable001,(loc_integer01),(34),(loc _integer04))
    endif
    if loc_integer02==1 then
    set loc_integer03=160
    elseif loc_integer02==2 then
    set loc_integer03=120
    endif
    call SetUnitX(loc_unit02,GetUnitX(loc_unit01))
    call SetUnitY(loc_unit02,GetUnitY(loc_unit01))
    if loc_integer04>loc_integer03 then
    call KillUnit(loc_unit02)
    call Func0035(loc_trigger01)
    call FlushChildHashtable(hashtable001,(loc_integer01))
    elseif loc_integer04>30 then
    call UnitRemoveAbility(loc_unit02,'Aloc')
    call ShowUnit(loc_unit02,true)
    call Func0190(loc_unit02,'Aloc')
    endif
    set loc_trigger01=null
    set loc_unit02=null
    set loc_unit01=null
    return false
    endfunction

    function Func3281 takes unit loc_unit01,unit loc_unit02 returns nothing
    local group loc_group01=Func0030()
    call DestroyEffect(AddSpecialEffect("Doodads\\Cinematic \\ShimmeringPortal\\ShimmeringPortal.mdl",GetUnitX (loc_unit01),GetUnitY(loc_unit01)))
    call DestroyEffect(AddSpecialEffect("Doodads\\Cinematic \\ShimmeringPortal\\ShimmeringPortal.mdl",GetUnitX (loc_unit02),GetUnitY(loc_unit02)))
    set real009=GetUnitX(loc_unit02)
    set real010=GetUnitY(loc_unit02)
    set unit124=loc_unit01
    call GroupEnumUnitsInRange(loc_group01,GetUnitX(loc_uni t01),GetUnitY(loc_unit01),475,Condition(function Func0331))
    call ForGroup(loc_group01,function Func3280)
    call Func0029(loc_group01)
    set loc_group01=null
    endfunction

    function Func3280 takes nothing returns nothing
    call DestroyEffect(AddSpecialEffect("Abilities\\Spells\ \Items\\AIil\\AIilTarget.mdl",GetUnitX(GetEnumUnit ()),GetUnitY(GetEnumUnit())))
    call Func0044(GetEnumUnit(),4406,1)
    call SetUnitPosition(GetEnumUnit(),real009,real010)
    call PanCameraToTimedForPlayer(GetOwningPlayer(GetEnumU nit()),real009,real010,0)
    call DestroyEffect(AddSpecialEffect("Abilities\\Spells\ \Items\\AIil\\AIilTarget.mdl",GetUnitX(GetEnumUnit ()),GetUnitY(GetEnumUnit())))
    endfunction



    call ExecuteFunc("Func3295") Old Expulsion

    Spoiler: 


    function Func3295 takes nothing returns nothing
    local trigger loc_trigger01=CreateTrigger()
    call Func0175(loc_trigger01,EVENT_PLAYER_UNIT_SPELL_EFF ECT)
    call TriggerAddCondition(loc_trigger01,Condition(functi on Func3294))
    set loc_trigger01=null
    endfunction

    function Func3294 takes nothing returns boolean
    if GetSpellAbilityId()=='A288' then
    call Func3293()
    endif
    return false
    endfunction


    function Func3293 takes nothing returns nothing
    local real loc_real01=GetUnitX(GetTriggerUnit())
    local real loc_real02=GetUnitY(GetTriggerUnit())
    local trigger loc_trigger01=CreateTrigger()
    local integer loc_integer01=GetHandleId(loc_trigger01)
    call Func0181(sound074,loc_real01,loc_real02)
    call TriggerRegisterTimerEvent(loc_trigger01,1.5,true)
    call TriggerAddCondition(loc_trigger01,Condition(functi on Func3292))
    call Func0190(GetTriggerUnit(),'A283')
    call SaveUnitHandle(hashtable001,(loc_integer01),(14),( GetTriggerUnit()))
    call SaveReal(hashtable001,(loc_integer01),(6),((loc_re al01)*1.0))
    call SaveReal(hashtable001,(loc_integer01),(7),((loc_re al02)*1.0))
    call SaveBoolean(hashtable001,(loc_integer01),(307),(fa lse))
    call SaveBoolean(hashtable001,(loc_integer01),(308),(fa lse))
    set loc_trigger01=null
    endfunction



    call ExecuteFunc("Func3278") Pit of Malice.

    Spoiler: 


    function Func3278 takes nothing returns nothing
    local trigger loc_trigger01=CreateTrigger()
    call Func0175(loc_trigger01,EVENT_PLAYER_UNIT_SPELL_EFF ECT)
    call TriggerAddCondition(loc_trigger01,Condition(functi on Func3277))
    set loc_trigger01=null
    endfunction

    function Func3277 takes nothing returns boolean
    if GetSpellAbilityId()=='A0RA' then
    call Func3276()
    endif
    return false
    endfunction


    function Func3276 takes nothing returns nothing
    local integer loc_integer01=1
    local location loc_location01=GetSpellTargetLoc()
    local real loc_real01=GetLocationX(loc_location01)
    local real loc_real02=GetLocationY(loc_location01)
    local real loc_real03
    local real loc_real04
    local integer loc_integer02=16
    local string loc_string01="Abilities\\Spells\\Undead\\Graveyard \\GraveMarker.mdl"
    local trigger loc_trigger01=CreateTrigger()
    local integer loc_integer03=GetHandleId(loc_trigger01)
    local group loc_group01=Func0030()
    call Func0181(sound004,loc_real01,loc_real02)
    call TriggerRegisterTimerEvent(loc_trigger01,0.1,true)
    call TriggerAddCondition(loc_trigger01,Condition(functi on Func3275))
    call SaveGroupHandle(hashtable001,(loc_integer03),(22), (loc_group01))
    call SaveUnitHandle(hashtable001,(loc_integer03),(221), (GetTriggerUnit()))
    call SaveReal(hashtable001,(loc_integer03),(6),((loc_re al01)*1.0))
    call SaveReal(hashtable001,(loc_integer03),(7),((loc_re al02)*1.0))
    loop
    exitwhen loc_integer01>loc_integer02
    set loc_real03=loc_real01+real342*Cos(loc_integer01*36 0/loc_integer02*bj_DEGTORAD)
    set loc_real04=loc_real02+real342*Sin(loc_integer01*36 0/loc_integer02*bj_DEGTORAD)
    call SaveEffectHandle(hashtable001,(loc_integer03),(270 0+loc_integer01),(AddSpecialEffect(loc_string01,lo c_real03,loc_real04)))
    if loc_integer01==1 or loc_integer01==5 or loc_integer01==9 or loc_integer01==13 then
    set loc_real03=loc_real01+275*Cos(loc_integer01*360/loc_integer02*bj_DEGTORAD)
    set loc_real04=loc_real02+275*Sin(loc_integer01*360/loc_integer02*bj_DEGTORAD)
    endif
    set loc_integer01=loc_integer01+1
    endloop
    set loc_trigger01=null
    set loc_group01=null
    endfunction


    function Func3275 takes nothing returns boolean
    local trigger loc_trigger01=GetTriggeringTrigger()
    local integer loc_integer01=GetHandleId(loc_trigger01)
    local integer loc_integer02
    local group loc_group01=(LoadGroupHandle(hashtable001,(loc_int eger01),(22)))
    local real loc_real01=(LoadReal(hashtable001,(loc_integer01), (6)))
    local real loc_real02=(LoadReal(hashtable001,(loc_integer01), (7)))
    local group loc_group02=Func0030()
    local unit loc_unit01=(LoadUnitHandle(hashtable001,(loc_integ er01),(221)))
    set unit124=loc_unit01
    set unit344=loc_unit01
    call GroupEnumUnitsInRange(loc_group02,loc_real01,loc_r eal02,300,Condition(function Func0301))
    set group002=loc_group01
    call ForGroup(loc_group02,function Func3274)
    call Func0029(loc_group02)
    if GetTriggerEvalCount(loc_trigger01)>real341*10 then
    set loc_integer02=1
    loop
    exitwhen loc_integer02>16
    call DestroyEffect((LoadEffectHandle(hashtable001,(loc_ integer01),(2700+loc_integer02))))
    set loc_integer02=loc_integer02+1
    endloop
    call Func0029(loc_group01)
    call FlushChildHashtable(hashtable001,(loc_integer01))
    call Func0035(loc_trigger01)
    endif
    set loc_trigger01=null
    set loc_group01=null
    set loc_group02=null
    set loc_unit01=null
    return false
    endfunction


    function Func3274 takes nothing returns nothing
    local unit loc_unit01
    if IsUnitInGroup(GetEnumUnit(),group002)==false then
    call GroupAddUnit(group002,GetEnumUnit())
    set loc_unit01=CreateUnit(GetOwningPlayer(GetEnumUnit( )),'e00E',GetUnitX(GetEnumUnit()),GetUnitY(GetEnum Unit()),0)
    call Func0190(loc_unit01,'A0RI')
    call SetUnitAbilityLevel(loc_unit01,'A0RI',GetUnitAbili tyLevel(unit344,'A0RA'))
    call IssueTargetOrder(loc_unit01,"ensnare",GetEnumUnit( ))
    call Func0114(unit344,GetEnumUnit(),1,100)
    endif
    set loc_unit01=null
    endfunction



    call ExecuteFunc("Func3300") Fire Storm

    Spoiler: 


    function Func3300 takes nothing returns nothing
    local trigger loc_trigger01=CreateTrigger()
    call Func0175(loc_trigger01,EVENT_PLAYER_UNIT_SPELL_EFF ECT)
    call TriggerAddCondition(loc_trigger01,Condition(functi on Func3299))
    set loc_trigger01=null
    endfunction

    function Func3299 takes nothing returns boolean
    if GetSpellAbilityId()=='A01I' then
    call Func3298()
    endif
    return false
    endfunction


    function Func3298 takes nothing returns nothing
    local trigger loc_trigger01=CreateTrigger()
    local integer loc_integer01=GetHandleId(loc_trigger01)
    local unit loc_unit01=GetTriggerUnit()
    local real loc_real01=GetSpellTargetX()
    local real loc_real02=GetSpellTargetY()
    local integer loc_integer02=GetUnitAbilityLevel(loc_unit01,'A01I ')
    local unit loc_unit02=CreateUnit(GetOwningPlayer(loc_unit01), 'e00E',loc_real01,loc_real02,0)
    call TriggerAddCondition(loc_trigger01,Condition(functi on Func3297))
    call TriggerRegisterTimerEvent(loc_trigger01,1,true)
    call SaveUnitHandle(hashtable001,(loc_integer01),(2),(l oc_unit01))
    call SaveUnitHandle(hashtable001,(loc_integer01),(19),( loc_unit02))
    call Func0190(loc_unit02,'A262')
    call SetUnitAbilityLevel(loc_unit02,'A262',loc_integer0 2)
    call IssuePointOrder(loc_unit02,"rainoffire",loc_real01 ,loc_real02)
    set loc_unit01=null
    set loc_unit02=null
    endfunction

    function Func3297 takes nothing returns boolean
    local trigger loc_trigger01=GetTriggeringTrigger()
    local integer loc_integer01=GetHandleId(loc_trigger01)
    local unit loc_unit01=(LoadUnitHandle(hashtable001,(loc_integ er01),(2)))
    local unit loc_unit02=(LoadUnitHandle(hashtable001,(loc_integ er01),(19)))
    local group loc_group01=Func0030()
    set unit124=loc_unit01
    set real344=GetUnitAbilityLevel(loc_unit01,'A01I')*10+ 10
    call GroupEnumUnitsInRange(loc_group01,GetUnitX(loc_uni t02),GetUnitY(loc_unit02),475,Condition(function Func0326))
    call ForGroup(loc_group01,function Func3296)
    call Func0029(loc_group01)
    if GetTriggerEvalCount(loc_trigger01)==5 then
    call FlushChildHashtable(hashtable001,(loc_integer01))
    call Func0035(loc_trigger01)
    endif
    set loc_trigger01=null
    set loc_unit02=null
    return false
    endfunction

    function Func3296 takes nothing returns nothing
    endfunction





    call ExecuteFunc("Func3304") Don't know. Some ability named demonic clutch.

    Spoiler: 


    function Func3304 takes nothing returns nothing
    local trigger loc_trigger01=CreateTrigger()
    call Func0175(loc_trigger01,EVENT_PLAYER_UNIT_SPELL_EFF ECT)
    call TriggerAddCondition(loc_trigger01,Condition(functi on Func3303))
    set loc_trigger01=null
    endfunction

    function Func3303 takes nothing returns boolean
    if GetSpellAbilityId()=='A24Q' and Func0028(GetSpellTargetUnit())==false then
    call Func3302()
    endif
    return false
    endfunction



    call ExecuteFunc("Func3315") Some ability named Corpse Collector?


    Spoiler: 

    function Func3315 takes nothing returns nothing
    local trigger loc_trigger01=CreateTrigger()
    call Func0175(loc_trigger01,EVENT_PLAYER_UNIT_SPELL_EFF ECT)
    call TriggerAddCondition(loc_trigger01,Condition(functi on Func3313))
    set loc_trigger01=CreateTrigger()
    call Func0175(loc_trigger01,EVENT_PLAYER_HERO_SKILL)
    call TriggerAddCondition(loc_trigger01,Condition(functi on Func3314))
    set loc_trigger01=null
    endfunction

    function Func3313 takes nothing returns boolean
    if GetSpellAbilityId()=='A261' then
    call Func3312()
    endif
    return false
    endfunction

    function Func3314 takes nothing returns boolean
    if GetLearnedSkill()=='A261' and GetUnitAbilityLevel(GetTriggerUnit(),'A261')==1 and IsUnitIllusion(GetTriggerUnit())==false then
    call Func3307()
    endif
    return false
    endfunction




    call ExecuteFunc("Func3320") Some ability named Summon Shade? I think it was in 6.75 beta test

    Spoiler: 


    function Func3320 takes nothing returns nothing
    local trigger loc_trigger01=CreateTrigger()
    call Func0175(loc_trigger01,EVENT_PLAYER_UNIT_SPELL_EFF ECT)
    call TriggerAddCondition(loc_trigger01,Condition(functi on Func3319))
    endfunction

    function Func3319 takes nothing returns boolean
    if GetSpellAbilityId()=='A2L6' then
    call Func3318()
    endif
    return false
    endfunction

    function Func3318 takes nothing returns nothing
    local unit loc_unit01=GetTriggerUnit()
    local trigger loc_trigger01=CreateTrigger()
    local integer loc_integer01=GetHandleId(loc_trigger01)
    local unit loc_unit02=CreateUnit(GetOwningPlayer(loc_unit01), 'u01Y',GetUnitX(loc_unit01)+100,GetUnitY(loc_unit0 1)+100,0)
    local group loc_group01
    local integer loc_integer02=GetUnitAbilityLevel(loc_unit01,'A2L6 ')
    local real loc_real01
    local unit loc_unit03
    local unit loc_unit04
    call TriggerRegisterUnitEvent(loc_trigger01,loc_unit02, EVENT_UNIT_SPELL_FINISH)
    call TriggerRegisterTimerEvent(loc_trigger01,0.1,true)
    call TriggerAddCondition(loc_trigger01,Condition(functi on Func3316))
    call SaveUnitHandle(hashtable001,(loc_integer01),(2),(l oc_unit01))
    call SaveUnitHandle(hashtable001,(loc_integer01),(19),( loc_unit02))
    call SaveReal(hashtable001,(loc_integer01),(6),((GetUni tX(loc_unit02))*1.0))
    call SaveReal(hashtable001,(loc_integer01),(7),((GetUni tY(loc_unit02))*1.0))
    call UnitAddAbility(loc_unit02,'A2L4')
    call SetUnitAbilityLevel(loc_unit02,'A2L5',GetUnitAbili tyLevel(loc_unit01,'A2L6'))
    call SaveReal(hashtable001,(GetHandleId(loc_unit02)),(3 4),(((TimerGetElapsed(timer001)))*1.0))
    set unit347=loc_unit01
    set loc_group01=Func0030()
    call GroupEnumUnitsInRange(loc_group01,0,0,99999,Condit ion(function Func3317))
    if CountUnitsInGroup(loc_group01)>loc_integer02+1 then
    set loc_unit04=FirstOfGroup(loc_group01)
    set loc_real01=(LoadReal(hashtable001,(GetHandleId(loc _unit04)),(34)))
    set loc_unit03=loc_unit04
    call GroupRemoveUnit(loc_group01,loc_unit04)
    loop
    exitwhen loc_unit04==null
    if loc_real01>(LoadReal(hashtable001,(GetHandleId(loc _unit04)),(34)))then
    set loc_real01=(LoadReal(hashtable001,(GetHandleId(loc _unit04)),(34)))
    set loc_unit03=loc_unit04
    endif
    set loc_unit04=FirstOfGroup(loc_group01)
    call GroupRemoveUnit(loc_group01,loc_unit04)
    endloop
    call KillUnit(loc_unit03)
    endif
    call Func0029(loc_group01)
    set loc_group01=null
    set loc_unit02=null
    set loc_unit01=null
    set loc_trigger01=null
    endfunction





    call ExecuteFunc("Func3326") Atrophy Aura

    Spoiler: 


    function Func3326 takes nothing returns nothing
    local trigger loc_trigger01=CreateTrigger()
    call Func0175(loc_trigger01,EVENT_PLAYER_HERO_SKILL)
    call TriggerAddCondition(loc_trigger01,Condition(functi on Func3325))
    set loc_trigger01=null
    endfunction

    function Func3325 takes nothing returns boolean
    if GetLearnedSkill()=='AIcd' and IsUnitIllusion(GetTriggerUnit())==false and GetUnitAbilityLevel(GetTriggerUnit(),'AIcd')==1 then
    call Func3324()
    endif
    return false
    endfunction

    function Func3324 takes nothing returns nothing
    local unit loc_unit01=GetTriggerUnit()
    local trigger loc_trigger01=CreateTrigger()
    local integer loc_integer01=GetHandleId(loc_trigger01)
    call Func0175(loc_trigger01,EVENT_PLAYER_UNIT_DEATH)
    call TriggerAddCondition(loc_trigger01,Condition(functi on Func3322))
    call SaveUnitHandle(hashtable001,(loc_integer01),(2),(l oc_unit01))
    set loc_trigger01=CreateTrigger()
    set loc_integer01=GetHandleId(loc_trigger01)
    call TriggerRegisterTimerEvent(loc_trigger01,0.25,true)
    call TriggerAddCondition(loc_trigger01,Condition(functi on Func3323))
    call SaveUnitHandle(hashtable001,(loc_integer01),(2),(l oc_unit01))
    set loc_unit01=null
    set loc_trigger01=null
    endfunction


    function Func3322 takes nothing returns boolean
    local trigger loc_trigger01=GetTriggeringTrigger()
    local integer loc_integer01=GetHandleId(loc_trigger01)
    local unit loc_unit01=(LoadUnitHandle(hashtable001,(loc_integ er01),(2)))
    local unit loc_unit02=GetTriggerUnit()
    local integer loc_integer02=GetUnitAbilityLevel(loc_unit01,'AIcd ')
    local integer loc_integer03
    local integer loc_integer04
    if IsUnitInRange(loc_unit01,loc_unit02,925)and Func0191(loc_unit01)==false and IsUnitAlly(loc_unit01,GetOwningPlayer(loc_unit02)) ==false and GetUnitTypeId(loc_unit02)!='n0F5' and IsUnitIllusion(loc_unit02)==false and Func0465(GetUnitTypeId(loc_unit02))==false and GetUnitAbilityLevel(loc_unit02,'A04R')==0 then
    set loc_integer04=(LoadInteger(hashtable001,(GetHandle Id(loc_unit01)),(783)))
    if IsUnitType(loc_unit02,UNIT_TYPE_HERO)==true then
    set loc_integer03=30
    else
    set loc_integer03=5
    endif
    set loc_integer04=loc_integer04+loc_integer03
    call SaveInteger(hashtable001,(GetHandleId(loc_unit01)) ,(783),(loc_integer04))
    set loc_trigger01=CreateTrigger()
    set loc_integer01=GetHandleId(loc_trigger01)
    call TriggerRegisterTimerEvent(loc_trigger01,25+loc_int eger02*5,false)
    call TriggerRegisterDeathEvent(loc_trigger01,loc_unit01 )
    call TriggerAddCondition(loc_trigger01,Condition(functi on Func3321))
    call SaveUnitHandle(hashtable001,(loc_integer01),(2),(l oc_unit01))
    call SaveInteger(hashtable001,(loc_integer01),(34),(loc _integer03))
    endif
    set loc_trigger01=null
    set loc_unit01=null
    set loc_unit02=null
    return false
    endfunction

    function Func3323 takes nothing returns boolean
    local trigger loc_trigger01=GetTriggeringTrigger()
    local integer loc_integer01=GetHandleId(loc_trigger01)
    local unit loc_unit01=(LoadUnitHandle(hashtable001,(loc_integ er01),(2)))
    local integer loc_integer02=(LoadInteger(hashtable001,(GetHandle Id(loc_unit01)),(783)))
    local integer loc_integer03=(LoadInteger(hashtable001,(loc_integ er01),(238)))
    if loc_integer03!=loc_integer02 then
    call Func0413(loc_unit01,loc_integer02)
    call SaveInteger(hashtable001,(loc_integer01),(238),(lo c_integer02))
    endif
    set loc_trigger01=null
    set loc_unit01=null
    return false
    endfunction



    Current bug list:

    Hero:
    -Turn rate should be 0.4 (NOT 0.6)


    Fire Storm:
    -Has extra damage instance after first wave. Highlighted in spoiler:
    Spoiler: 

    [01:16.83] Abyssal Underlord casts ability Firestorm.
    [01:17.76] Abyssal Underlord hits Rubick with Firestorm for 52 damage (1195->1143).
    [01:17.76] Abyssal Underlord hits Rubick with Firestorm for 15 damage (1143->1128).
    [01:17.76] Rubick receives Firestorm debuff from Abyssal Underlord.
    [01:18.79] Abyssal Underlord hits Rubick with Firestorm for 15 damage (1130->1115).
    [01:18.79] Abyssal Underlord hits Rubick with Firestorm for 52 damage (1114->1062).
    [01:19.79] Abyssal Underlord hits Rubick with Firestorm for 15 damage (1064->1049).
    [01:19.83] Abyssal Underlord hits Rubick with Firestorm for 52 damage (1049->997).
    [01:20.79] Abyssal Underlord hits Rubick with Firestorm for 15 damage (999->984).
    [01:20.86] Abyssal Underlord hits Rubick with Firestorm for 52 damage (983->931).
    [01:21.79] Abyssal Underlord hits Rubick with Firestorm for 15 damage (933->918).
    [01:21.89] Abyssal Underlord hits Rubick with Firestorm for 52 damage (918->866).
    [01:22.79] Abyssal Underlord hits Rubick with Firestorm for 15 damage (867->852).
    [01:22.93] Abyssal Underlord hits Rubick with Firestorm for 52 damage (852->800).
    [01:23.79] Abyssal Underlord hits Rubick with Firestorm for 15 damage (801->786).
    [01:24.79] Abyssal Underlord hits Rubick with Firestorm for 15 damage (788->773).
    [01:24.96] Rubick loses Firestorm debuff.

    -Damage over time tick rate is 1.03 seconds from battle log readings. Should be 1 second. (probably server tick problem)
    -One wave produces 3 burn damage instances. Should produce only 2
    -Burn should NOT be purgeable.


    Pit of Malice:
    -Pit of Malice cast range should be 750 (NOT 800)
    -Should have 0.1 second delay.
    -Should deal damage after debuff applied not before.
    -Not sure what "pit_interval" parameter does in dota 2 data files.
    -Should NOT affect ancients except Spirit Bear.
    -Should NOT affect courier.
    -Should NOT be dispelled by magic immunity
    -Should NOT be purgeable.



    Atrophy Aura:
    -Each damage buff creates its own buff icon overflowing UI.
    -Reduces Roshan damage by too little then he gets damage upgrades. Roshan bonus damage should be added as base damage thus be reduced by atrophy aura.
    -Undying zombies should NOT give bonus damage.
    -Structures (towers, baracks, filler buildings) except Tombstone (which currently does) should give bonus damage.
    -Dying with resurrection (aegis, Reincarnation) should not give bonus damage.
    -Suicides should not give bonus damage.
    -Bonus damage should not be purgeable. (credits to li.lo)
    -Illusions should not gain bonus damage. (credits to li.lo)


    Dark Rift:
    -Dark Rift teleportation delay should be 5/4/3
    -Should teleport invulnerable heroes.
    -Cancel should NOT interrupt channeling
    -Lacks unit targeting making it difficult to select exact creep to teleport on.
    -Does not function if targeted creep is under attack. Should make this creep low priority target.
    -Should NOT teleport illusions
    -Should NOT teleport creep-heroes. (Spirit Bear, Chaotic offering)
    -Teleportation persist through death. Should be canceled.
    -Can teleport to player controlled units. Should not.
    -Rubic should not be able to steal Dark Rift Cancel sub-ability (credits to li.lo)
    Last edited by igo95862; 07-26-2014 at 10:46 AM.

  2. #2
    Basic Member Legion Commander's Avatar
    Join Date
    Sep 2013
    Location
    Stonehall
    Posts
    16,598
    Igo-sama, maybe the last one is intended but im not sure.

    Quote Originally Posted by Phoenix. View Post
    2013: 10 heroes, 3 reworks, 4 events, hats, 1 arcana and TI
    2014: 4 heroes, 2 events, 2 arcanas, hats, 1 rework and TI.
    Lazyness. Not to mention the lack of bugfixes, and the amount of new ones with each new content added


    Credits to Phoenix.

  3. #3
    Basic Member Jan2011's Avatar
    Join Date
    Apr 2012
    Location
    Germany
    Posts
    17,357
    hm in what list do i add your threads now
    If you find spelling errors, you are free to take them.

  4. #4
    Basic Member Lord_Talron's Avatar
    Join Date
    Feb 2012
    Location
    Cornflake, Arkansas
    Posts
    3,175
    nerf igo pls. too stronk
    ヽ༼ຈل͜ຈ༽ノ raise your hype ヽ༼ຈل͜ຈ༽ノ

  5. #5
    Basic Member Jarnoloh's Avatar
    Join Date
    Sep 2013
    Posts
    1,726
    LC rival?

  6. #6
    Basic Member igo95862's Avatar
    Join Date
    Aug 2012
    Posts
    3,142
    Updated with JASS code and Dark Rift delay

    Dark delay should be 5/4/3 not 6/5/4

    Theoretical Proof:

    You can see it in Func3285 (main function for dark Rift)
    Spoiler: 

    function Func3285 takes unit loc_unit01 returns nothing
    local trigger loc_trigger01=CreateTrigger()
    local integer loc_integer01=GetHandleId(loc_trigger01)
    local unit loc_unit02=GetSpellTargetUnit()
    local real loc_real01
    local real loc_real02
    local unit loc_unit03
    if loc_unit02==null then
    set loc_unit02=Func3284(loc_unit01)
    endif
    if loc_unit02==null then
    call Func0119(GetOwningPlayer(loc_unit01),GetObjectName ('n03H'))
    return
    endif
    call SetPlayerAbilityAvailable(GetOwningPlayer(loc_unit 01),'A0R0',false)
    call SetPlayerAbilityAvailable(GetOwningPlayer(loc_unit 01),'A2MB',true)
    call Func0190(loc_unit01,'A2MB')
    call TriggerRegisterTimerEvent(loc_trigger01,6-GetUnitAbilityLevel(loc_unit01,'A0R0'),false)
    call TriggerRegisterUnitEvent(loc_trigger01,loc_unit02, EVENT_UNIT_DEATH)
    call TriggerRegisterUnitEvent(loc_trigger01,loc_unit01, EVENT_UNIT_SPELL_EFFECT)
    call TriggerAddCondition(loc_trigger01,Condition(functi on Func3282))
    call SaveEffectHandle(hashtable001,(loc_integer01),(32) ,(AddSpecialEffectTarget("war3mapImported\\DarkHan ds.mdl",loc_unit02,"overhead")))
    call SaveUnitHandle(hashtable001,(loc_integer01),(2),(l oc_unit01))
    call SaveUnitHandle(hashtable001,(loc_integer01),(17),( loc_unit02))
    call UnitAddType(loc_unit02,UNIT_TYPE_PEON)
    set loc_trigger01=CreateTrigger()
    set loc_integer01=GetHandleId(loc_trigger01)
    call TriggerRegisterTimerEvent(loc_trigger01,.03,true)
    call TriggerRegisterUnitEvent(loc_trigger01,loc_unit01, EVENT_UNIT_SPELL_EFFECT)
    call TriggerAddCondition(loc_trigger01,Condition(functi on Func3279))
    call SaveInteger(hashtable001,(loc_integer01),(5),(GetU nitAbilityLevel(loc_unit01,'A0R0')))
    call SaveUnitHandle(hashtable001,(loc_integer01),(2),(l oc_unit01))
    set loc_unit03=CreateUnit(GetOwningPlayer(loc_unit01), 'h098',GetUnitX(loc_unit01),GetUnitY(loc_unit01),0 )
    call SaveUnitHandle(hashtable001,(loc_integer01),(393), (loc_unit03))
    call ShowUnit(loc_unit03,false)
    set loc_trigger01=null
    set loc_unit02=null
    endfunction

    6-level of spell=5/4/3


    Practical Proof:

    Dota 1: 5/4/3

    Pit Lord is not frozen
    Dota 2: 6/5/4

    Abbysal UnderLord gets frozen

  7. #7
    Basic Member Legion Commander's Avatar
    Join Date
    Sep 2013
    Location
    Stonehall
    Posts
    16,598
    Quote Originally Posted by Jarnoloh View Post
    LC rival?
    Yup. He is the commander of the Abyssal Horde in my lore.

    Quote Originally Posted by Phoenix. View Post
    2013: 10 heroes, 3 reworks, 4 events, hats, 1 arcana and TI
    2014: 4 heroes, 2 events, 2 arcanas, hats, 1 rework and TI.
    Lazyness. Not to mention the lack of bugfixes, and the amount of new ones with each new content added


    Credits to Phoenix.

  8. #8
    Basic Member katsaroulhs's Avatar
    Join Date
    Apr 2013
    Location
    Orion Arm
    Posts
    16,971
    Is he close to getting released?
    Spoiler: 

  9. #9
    Basic Member Fausto's Avatar
    Join Date
    Jul 2012
    Location
    Soviet Brasil
    Posts
    1,128
    Insta-buying arcana/cosmetics.
    Hope wise developers make him teal/four legs/lil wings and with big dude voice
    Last edited by Fausto; 03-03-2014 at 09:46 AM.

  10. #10
    Basic Member katsaroulhs's Avatar
    Join Date
    Apr 2013
    Location
    Orion Arm
    Posts
    16,971
    Quote Originally Posted by Fausto View Post
    Insta-buying arcana/cosmetics.
    Hope wise developers make him teal/four legs/lil wings and with big dude voice
    So like in wc3? Don't count on it.
    Spoiler: 

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •