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

Thread: [Confirmed] Pudge's Hook's speed is too high

  1. #1
    Basic Member ThoAppelsin's Avatar
    Join Date
    Jan 2012

    [Confirmed] Pudge's Hook's speed is too high

    It is set to 1600
    It should be 1333,33

    ~20% faster


    01  function Func3153 takes nothing returns boolean
    02    local trigger loc_trigger01=GetTriggeringTrigger()
    03    local integer loc_integer01=GetHandleId(loc_trigger01)
    04    local integer loc_integer02=(LoadInteger(hashtable001,(loc_integer01),(376)))
    05    local integer loc_integer03=(LoadInteger(hashtable001,(loc_integer01),(5)))
    06    local real loc_real01=(LoadReal(hashtable001,(loc_integer01),(13)))
    07    local unit loc_unit01=(LoadUnitHandle(hashtable001,(loc_integer01),(14)))
    08    local trigger loc_trigger02=(LoadTriggerHandle(hashtable001,(loc_integer01),(11)))
    09    local integer loc_integer04=GetHandleId(loc_trigger02)
    10    local group loc_group01
    11    local unit loc_unit02
    12    local real loc_real02
    13    local real loc_real03
    14    local real loc_real04
    15    if loc_integer02<10+5*loc_integer03 then
    16      set loc_integer02=loc_integer02+1
    17      call SaveInteger(hashtable001,(loc_integer01),(376),(loc_integer02))
    18      set loc_real02=GetUnitX(loc_unit01)+loc_integer02*40*Cos(loc_real01*bj_DEGTORAD)
    19      set loc_real03=GetUnitY(loc_unit01)+loc_integer02*40*Sin(loc_real01*bj_DEGTORAD)
    20      call SaveUnitHandle(hashtable001,(loc_integer04),(2100+loc_integer02),(CreateUnit(GetOwningPlayer(loc_unit01),'u00H',loc_real02,loc_real03,loc_real01)))
    21      set loc_group01=Func0030()
    22      call GroupEnumUnitsInRange(loc_group01,loc_real02,loc_real03,125,Condition(function Func0317))
    23      call GroupRemoveUnit(loc_group01,loc_unit01)
    24      set loc_unit02=GroupPickRandomUnit(loc_group01)
    25      call Func0029(loc_group01)
    26      if loc_unit02!=null then
    27        call FlushChildHashtable(hashtable001,(loc_integer01))
    28        call Func0035(loc_trigger01)
    29        call TriggerRegisterTimerEvent(loc_trigger02,0.03,true)
    30        call TriggerAddCondition(loc_trigger02,Condition(function Func3152))
    31        call SaveInteger(hashtable001,(loc_integer04),(376),(loc_integer02))
    32        call SaveBoolean(hashtable001,(loc_integer04),(377),(true))
    33        call SaveUnitHandle(hashtable001,(loc_integer04),(17),(loc_unit02))
    34        if IsUnitEnemy(loc_unit02,GetOwningPlayer(loc_unit01))then
    35          if IsUnitType(loc_unit02,UNIT_TYPE_HERO)==true then
    36            call Func0383("HA_Hits"+I2S(GetPlayerId(GetOwningPlayer(loc_unit01))),integers151[GetPlayerId(GetOwningPlayer(loc_unit01))])
    37            set integers151[GetPlayerId(GetOwningPlayer(loc_unit01))]=integers151[GetPlayerId(GetOwningPlayer(loc_unit01))]+1
    38            call Func0044(loc_unit01,4400,1.5)
    39          endif
    40          set integers152[GetPlayerId(GetOwningPlayer(loc_unit01))]=integers152[GetPlayerId(GetOwningPlayer(loc_unit01))]+1
    41          call Func0383("HA_Total"+I2S(GetPlayerId(GetOwningPlayer(loc_unit01))),integers152[GetPlayerId(GetOwningPlayer(loc_unit01))])
    42          call Func3151(loc_unit01,loc_unit02)
    43          call Func0109(loc_unit01,loc_unit02,3,90*loc_integer03)
    44          call DestroyEffect(AddSpecialEffectTarget("Objects\\Spawnmodels\\Human\\HumanBlood\\BloodElfSpellThiefBlood.mdl",loc_unit02,"origin"))
    45        endif
    46      endif
    47    else
    48      call FlushChildHashtable(hashtable001,(loc_integer01))
    49      call Func0035(loc_trigger01)
    50      set integers152[GetPlayerId(GetOwningPlayer(loc_unit01))]=integers152[GetPlayerId(GetOwningPlayer(loc_unit01))]+1
    51      call TriggerRegisterTimerEvent(loc_trigger02,0.03,true)
    52      call TriggerAddCondition(loc_trigger02,Condition(function Func3152))
    53      call SaveInteger(hashtable001,(loc_integer04),(376),(loc_integer02))
    54      call SaveBoolean(hashtable001,(loc_integer04),(377),(false))
    55    endif
    56    set loc_trigger01=null
    57    set loc_unit01=null
    58    set loc_trigger02=null
    59    set loc_group01=null
    60    set loc_unit02=null
    61    return false
    62  endfunction
    This function is called every 0.03 seconds, and is responsible for Hook movement during projection, searching for a valid target, stopping when the conditions are fulfilled, and counting for the -ha (Hook Accuracy, please bring it back)

    On lines #18 and #19, you can see that it does something with 40...
    loc_real03 is the angle that gets calculated in the previous function, which is the angle from Pudge's position to the spell target point as pudge reaches his casting point
    loc_integer02 is an integer that starts off with zero, and gets incremented on each cycle
    loc_unit01 is the Pudge

    40 units every 0.03 seconds >>> 40 / 0.03 >>> 1333.33 units per second

  2. #2
    Basic Member shideneyu's Avatar
    Join Date
    Feb 2013
    Nice found. Where did you find the source code?

  3. #3
    Basic Member
    Join Date
    Mar 2013
    I think it's fine because the map on dota2 is harder to aim then in wc3dota

  4. #4
    Basic Member ThoAppelsin's Avatar
    Join Date
    Jan 2012
    Quote Originally Posted by shideneyu View Post
    Nice found. Where did you find the source code?
    Illegal ways.

    Nah, not really... But kind of hard to explain, at least, kind of hard to explain how to use it.
    There is this stickied thread in playdota for the dump of a recent version:
    But if you want to acquire the latest version, you can and have to do it yourself with this:

  5. #5
    Basic Member ThoAppelsin's Avatar
    Join Date
    Jan 2012
    Quote Originally Posted by Balgorxz View Post
    I think it's fine because the map on dota2 is harder to aim then in wc3dota

  6. #6
    Basic Member Joker.22's Avatar
    Join Date
    Jun 2012
    holy shit man nice work.

  7. #7
    Basic Member Frost's Avatar
    Join Date
    Dec 2011
    Very nice find. I always felt that hook was a LOT slower in dota1, but never bothered to check.

    And mods should just ban people with "don't fix my favorite hero pls it's an intended change!" attitude. This isn't the balance forums. If there's any inconsistency between dota1 and dota2, it should be fixed. Even if it means your favorite hero is going to be nerfed.

    If IceFrog sees that meat hook is better balanced with 1600 speed, he'll change it in dota1 in the next patch. Just look at illuminate for example, it was bugged to be 2000 range in dota2 when it was 1600 range in dota1, it was fixed and suddenly a week later IceFrog buffed it in dota1 to 2000 range again.
    Here's my dotabuff profile in case anyone's interested:

  8. #8
    Basic Member Crowfeather's Avatar
    Join Date
    Jan 2013
    Effectively from your recent reports, I can now collate the evidence and say PUDGE's HOOK IS WAY TO OP!

    Nice find btw ;D

  9. #9
    Basic Member ThoAppelsin's Avatar
    Join Date
    Jan 2012
    Well, it sure can look like that Crowfeather :D
    but not at all...
    You can see that one of my reports is about Pudge's Hook being not wide enough while searching targets. It is 15% more narrow, meaning that it will be harder to evade the Hook if it gets increased to be proper.

    I had just seen a Chen-Pudge combo thread, and decided to check Hook's DotA code sequence, then suddenly all this came out...
    Everything began with that Chen-Pudge combo thread...

  10. #10
    Basic Member
    Join Date
    Dec 2011
    added to sticky.
    Make sure to read the Forum Rules as well as the stickied Threads of the Forum Section you are posting in.

    Contributions i'd like to highlight:
    My Suggestion: Coaching System
    My Sticky: Intended Changes List
    My Challenge: Completely Fixed Hero Challenge: Skywrath Mage

Posting Permissions

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