Forum Rules

  • No flaming or derogatory remarks, directly or through insinuation.
  • No discussion, sharing or referencing illegal software such as hacks, keygen, cracks and pirated software.
  • No offensive contents, including but not limited to, racism, gore or pornography.
  • No excessive spam/meme, i.e. copious one liners in a short period of time, typing with all caps or posting meme responses (text/image).
  • No trolling, including but not limited to, flame incitation, user provocation or false information distribution.
  • No link spamming or signature advertisements for content not specific to Dota 2.
  • No Dota 2 key requests, sell, trade etc.
  • You may not create multiple accounts for any purpose, including ban evasion, unless expressly permitted by a moderator.

  • Please search before posting. One thread per issue. Do not create another thread if there is an existing one already.
  • Before posting anything, make sure you check out all sticky threads (e.g., this). Do not create new threads about closed ones.
  • It is extremely important that you post in correct forum section.

  • Balance discussion only in Misc.
  • All art related (such as hero model) feedbacks go to Art Feedback Forum.
  • All matchmaking feedback should go here: Matchmaking Feedback
  • All report/low priority issues should go here: Commend/Report/Ban Feedback
  • No specific workshop item feedback. These should go to workshop page of that item.
  • When posting in non-bugs section (such as this), use [Bugs], [Discussion] or [Suggestion] prefix in your thread name.

In case you object some action by a moderator, please contact him directly through PM and explain your concerns politely. If you are still unable to resolve the issue, contact an administrator. Do not drag these issues in public.

All rules are meant to augment common sense, please use them when not conflicted with aforementioned policies.
See more
See less

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

  • Filter
  • Time
  • Show
Clear All
new posts

  • [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
    Nice found. Where did you find the source code?


    • #3
      I think it's fine because the map on dota2 is harder to aim then in wc3dota


      • #4
        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
          Originally posted by Balgorxz View Post
          I think it's fine because the map on dota2 is harder to aim then in wc3dota


          • #6
            holy shit man nice work.


            • #7
              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
                Effectively from your recent reports, I can now collate the evidence and say PUDGE's HOOK IS WAY TO OP!

                Nice find btw ;D
                Originally posted by Typhox
                Nope. Windows Explorer is not a database
                Take a look into the mirror! You think you are completely unfailable. With your limited knowledge, you think that you know more than someone who is very deep in the matter/an expert.


                • #9
                  Well, it sure can look like that Crowfeather
                  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
                    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


                    • #11
                      Let's see if Valve review the hook/1


                      • #12
                        Hook will be accelerated in next dota patch becasue valve to lazy to fix like it was with the ancients
                        sigpic <-- My work is done, if this gets implemented
                        Also: つ ◕_◕ ༽つ Give Soloqueue!
                        Need some incentive to start a match of dota?
                        Originally posted by DarkLite
                        Valve has abandoned the game! The game is now safe to leave.
                        No statistics will be recorded.


                        • #13
                          A random question, but why 0.03? That seems a weird update rate for a game (33 1/3 target fps). Shouldn't it be 1/30 making a hook speed of 1200?
                          I've absolutely no idea about the internals of dota 1 mind you, just asking as it seems a weird number from a development PoV.


                          • #14
                            How exactly does valve manage to screw this up?
                            Steam Profile
                            Python Interface to the Stats API
                            Suggestion: Courier Shift-Queue Improvements
                            Make Disablehelp work on Decrepify
                            Useful link for mute system supporters


                            • #15
                              Dendi will find you!