Announcement

Collapse

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

Dueling Fates update

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Dueling Fates update

    Please note the impact of today's patch log in your code:
    • First neutral creep spawn changed from 30 seconds to 1 minute: anyone that hardcoded stacking (or pulling) after the :30 mark will need to adjust their code (or better said, remove the 30 second exception, since neutrals respawn every minute anyway)
    • Removed Shrines from the base: GetShrine() will not be able to use the constants 0 (SHRINE_BASE_1), 1 (SHRINE_BASE_2) and 2 (SHRINE_BASE_3)
    • Heroes now start with a TP Scroll. TP scrolls start on cooldown at the beginning of the game. The inventory resupply needs to be adjusted (unless your code checks whether the bot already has a tp scroll - as it should )
    • Glyph now causes your creeps to be invulnerable for the glyph duration. the lane farming and pushing logic needs to accommodate this
    • Armor formula adjusted from 0.06*Armor/(1+0.06*Armor) to 0.05*Armor/(1+0.05*Armor) Impact for those of you using eHP
    • Moved mid Shrines closer to the primary jungle area for those of you that hardcoded Shrine locations (you shouldn't; just use GetLocation() on the handle returned by GetShrine() and extrapolate with GetBoundingRadius() for accuracy, if needed)
    • Swapped offlane Shrines and Bounty Runes I assume it means their location is swapped? (not sure here) - TBD
    • Moved primary jungle Bounty Runes closer to safelane camp area (close to the river ramps), Shifted bottom river Powerup Rune up the river slightly for those of you that hardcoded Rune locations (you shouldn't; just use GetRuneSpawnLocation() )
    • Reworked Dire safelane jungle area Not sure, might be a fix for the invalid neutrals returned by GetNearby*(), the creep spawn list or changed the camp location - TBD
    • Safelane hard camp adjusted (primarily pullable to the offlane, or to connect to the small camp) Same as above - TBD
    • Swapped medium and hard camps in the primary jungle (hard camp is now the one closest to the mid tier 2), Adjusted position of Radiant safelane hard camp up slightly for those of you with hardcoded neutral locations
    • Removed one of the ramps going down the jungle camp near each of the safelanes, Adjusted midlane ramps to be narrower, Adjusted offlane terrain to be wider, Reworked midlane for Dire (both sides can now walk along the ledges without being hit), Adjusted tree positions in front of the Radiant small camp pull , Made minor adjustments to low-ground tree positions in front of the Radiant ramp leading to the Dire offlane (near the blue crystals — pathing around these trees is now possible), Reduced size of the ramp going to the Radiant safelane jungle from the Dire offlane side, Slightly decreased size of ramp going below the Radiant Secret Shop, Shifted the ramp on the Dire offlane (that connects to the Radiant safelane hard camp) slightly to the right, Minor adjustments to tree layout, ramps and terrain above and around the Dire primary jungle, Adjusted ramp going down from Radiant Ancient camp towards the top river for those of you using MovePath()
    • Made multiple miscellaneous tree and line-of-sight adjustments, Removed the following ward spots: Radiant Ancient/Roshan, Bottom Radiant Rune, Dire Primary jungle (near Ancient camp) For those of you having bots using wards, you need to adjust the placement positions
    • Third Roshan kill now drops a single-use consumable refresher orb. Cooldown is independent from Refresher Orb
    • Neutrals now sleep at night. They have zero aggro range while sleeping. Jungling logic needs to be adjusted
    • Neutrals lane creep aggro is now based on which neutral spawn area they're in (enabled for the traditional safelane/offlane pull camps) for stack-pull logic
    • Illusions now deal 80% less damage to Roshan rather than dying instantly when attacking him., Roshan now upgrades every minute rather than every 4 minutes (bonuses rescaled so its the same, just smoother). Roshan kill logic
    • Illusions now benefit from Health and Mana regeneration. for those of you relying on these hacks to determine illusions
    • Hex can no longer be dispelled. Ability logic
    • Removed the remaining Unique Attack Modifiers about time this mostly affects bots that had item purchase limitations because of UAMs
    • Courier cost increased from 100 to 200, Flying Courier upgrade can no longer be purchased. Courier now upgrades automatically at 3 minutes., Removed the following items from the side shop: Quarterstaff, Orb of Venom, Blades of Attack, Sage's Mask, Stout Shield, Ring of Regeneration, Ring of health, Bottle (1 charge), Added the following item to the side shop: Ring of Protection, Added the following items to Secret Shop: Voidstone, Ring of Health, Bottle (full charge), Observer Wards cost increased from 60 to 80, Tango cost rescaled from 125 for 4 uses to 150 for 5 uses, Smoke of Deceit cost increased from 50 to 80, Gauntlet cost reduced from 150 to 135, Slippers cost reduced from 150 to 135, Mantle cost reduced from 150 to 135, Wraith Band Recipe reduced from 170 to 165, Bracer recipe reduced from 175 to 165, Null recipe increased from 155 to 165 item purchase logic needs adjustment
    • Flying Courier now has Courier Shield instead of the Haste ability (200 CD, Duration: 2).
    • Courier can no longer be purchased more than once., Courier can no longer refill Bottle. BottleCrow support ended
    • Sentry wards no longer automatically appear in front of Observer Wards when buying the item. Inventory usage code logic
    • A lot of item reworks done, including prerequisites - the rework done on active and passive spells affect the purchase list as some of them might no longer be relevant for a few heroes (f.e. Aether Lens no longer gives spell amp); the component rework affect only those with hardcoded lists vs using GetItemComponents(); Glimmer Cape can no longer be disassembled. I hope you're calling CanBeDisassembled() before ActionImmediate_DisassembleItem() instead of hardcoded lists
    • Removed items:: Diffusal Blade Level 2, Bloodstone recipe, Iron Talon, Poor Man's Shield
    • Added items: Meteor Hammer, Aeon Disk, Spirit Vessel, Nullifier, Kaya (has the spell amp removed from Aether Lens - personally I think both could have had it but whatever...), Refresher Shard
    • Reworked effects/attribute mechanics: Status modifications Aeon Disk reduces the duration of effects like silence/stun/disarm/root/fear/slow/etc, Spirit Vessel's active reduces enemy HP regen and heals by 70%, but amplifies those of allies etc., Added Perks (to be fair, there was the Spell Amp per Int which can be considered the pilot or draft of Perks so we can't really call this a new concept :P)
    • A lot of talents have been added, removed and modified - All level-up code needs to be redone
    • Some hero abilities/effects have been modified/added/removed - Level-up code and spell cast logic needs to be redone
    • New modifiers (use dump_modifier_list in the console to get the full list of modifiers used by the game)


    Disclaimer:
    I haven't tested all changes yet. Just got home. I will test the above as I can find some spare time. I am just writing stuff here to get an assessment of the impact based on the change notes So if anyone has additional details, feel free to post.
    Also note, the native bots (including all other bots that use native bots and only changed modes) might not have been included in this update; this means bots might behave weird.

    @Chris, I have a few questions
    • Regarding the shrine removal, will the values be reindexed (meaning whether SHRINE_JUNGLE_1's value remains at 3 or is changed to 0)
    • Will the Courier Shield be a new action or a recycle of Speed Burst?
    • Can you please give us some helper functions to distinguish Vengeful Spirit Vengeance Illusion, Tempest Double Illusion, Wraith Ghosts? Not sure if we need anything for the invulnerable Terrorblade Reflection illusion or Vengeful Spirit Allied Ghosts
    • Can you please add GetLinkedSpecialBonus() and GetLinkedAbility() ?
    • Haven't tested, but do GetHealthRegen() and GetManaRegen() work on enemies? The patch notes say that players can see enemy regen rates
    • Neutrals lane creep aggro is now based on which neutral spawn area they're in Can you include this in GetNeutralSpawners() ? And give some helper functions on how we can use/determine aggro if you think it's relevant
    • Can you please give some details on the points above marked with TBD ? Thanks
    • Neutrals now sleep at night. Can you add IsSleeping() ? I would say this should return true for Elder Titan's and Naga's disables as well; I guess Bane's Nightmare would use IsNightmared() instead? Thoughts?
    • Courier can no longer be purchased more than once. These functions need to be adjusted accordingly by removing handles or indexes since only one courier can exist: ActionImmediate_Courier(), GetCourier, GetCourierState and GetNumCouriers() should be removed since GetCourier() (no param) could be used to determine whether a courier exists or not and GetItemStockCount() can be used to determine whether it was bought. I am unsure what IsCourierAvailable() does since actions should be enough; I would say this is the least impact on bot code out of all game changes anyway ...
    Last edited by The Nomad; 12-08-2017, 12:25 AM.
    Explanations on the normal, high and very high brackets in replays: here, here & here
    Why maphacks won't work in D2: here

  • #2
    Sounds like fun... no?

    Comment


    • #3
      OK did a first test run. It seems the changes have even deeper impact but they are subtle and you will only catch them if you know where to look.
      For example bounty runes:
      v7.06 constants:
      Code:
      	RUNE_BOUNTY_1	= 2,	-- radiant safe lane
      	RUNE_BOUNTY_2	= 3,	-- radiant off lane
      	RUNE_BOUNTY_3	= 4,	-- dire safe lane
      	RUNE_BOUNTY_4	= 5	-- dire off lane
      v7.07 bounty rune constants:
      Code:
      	RUNE_BOUNTY_1	= 2,	-- radiant off lane
      	RUNE_BOUNTY_2	= 3,	-- dire off lane
      	RUNE_BOUNTY_3	= 4,	-- radiant safe lane
      	RUNE_BOUNTY_4	= 5	-- dire safe lane
      So in case any of you are wondering why your bots travel across the map or into enemy territory, that's the reason. So far I know the Ranked Matchmaking botpack uses a rune list. (@adam, even if you update the list now, keep in mind they can change again).

      I only caught this change because I do a check on the API to make sure I don't miss on any forgotten patch notes
      I will test more as I have time...

      @Chris
      Is this change final?
      Last edited by The Nomad; 11-01-2017, 03:46 PM.
      Explanations on the normal, high and very high brackets in replays: here, here & here
      Why maphacks won't work in D2: here

      Comment


      • #4
        Code:
        return BOT_ACTION_DESIRE_LOW, npcEnemy:GetLocation();
        return BOT_ACTION_DESIRE_LOW, npcEnemy:GetExtrapolatedLocation( nCastPoint );
        return BOT_ACTION_DESIRE_LOW, npcBot:GetExtrapolatedLocation( nCastPoint );
        etc, dont work properly for Pangolier's Swasbuckle skill.
        he will always charge to the centre of the map and then throw his blades towards his target from there.

        Comment


        • #5
          the new item names havent been put into the items.txt yet, is there a way to find the underhood names on them?
          item_recipe_aeon_disk is not correct as far as i have seen, not sure what else it may be called.

          Comment


          • #6
            Originally posted by Yavimaya View Post
            Code:
            return BOT_ACTION_DESIRE_LOW, npcEnemy:GetLocation();
            return BOT_ACTION_DESIRE_LOW, npcEnemy:GetExtrapolatedLocation( nCastPoint );
            return BOT_ACTION_DESIRE_LOW, npcBot:GetExtrapolatedLocation( nCastPoint );
            etc, dont work properly for Pangolier's Swasbuckle skill.
            he will always charge to the centre of the map and then throw his blades towards his target from there.
            Yep that always happens. I wonder if Chris will add an API on how to use Vector Targeting Ability or just fix it because it just says Point Targeting in the ability description.

            Originally posted by Yavimaya View Post
            the new item names havent been put into the items.txt yet, is there a way to find the underhood names on them?
            item_recipe_aeon_disk is not correct as far as i have seen, not sure what else it may be called.
            http://dota2.gamepedia.com/Cheats or you can take a look at ItemUtility.lua in my latest script.

            Comment


            • #7
              awesome thanks man!

              Comment


              • #8
                @Chris
                Low priority, but don't forget to give us IsBanished() as per the patch update stating New healthbar status called "BANISHED" has been added. | Works with Astral Imprisonment and Disruption

                Also can we get a GetBonusHeroes() function that returns the internal hero names of the bonus heroes in an array during hero selection?
                Last edited by The Nomad; 12-07-2017, 11:32 PM.
                Explanations on the normal, high and very high brackets in replays: here, here & here
                Why maphacks won't work in D2: here

                Comment


                • #9
                  FYI: I tested HasScepter() and it works properly with Aghanim's Scepter, Alchemists synthesized scepter and Io's Scepter Talent. GetNeutralSpawners() seems to report correct locations.

                  PSA: Devilesk also updated the map to 7.07 and ModDota seems to have updated the documentation.

                  @Chris What happened to GetModifierSourceAbility() ? I ran a debug on the dumps and it seems to be missing from the exported functions.


                  EDIT #1:
                  OK, it's confirmed. I ran a test with GetBot():GetModifierSourceAbility(0) and it won't call it. The function is not exported.

                  [VScript] Script Runtime Error: ...game\dota\scripts\vscripts\bots\bot_generic.lua :687: attempt to call method 'GetModifierSourceAbility' (a nil value)
                  EDIT #2:
                  Apart from the functions mentioned in this thread to adapt to the changes, GetMostRecentPing() needs to be updated with the new pings of the ping wheel: enemy vision, needed ward, defending and attacking. Same for ActionImmediate_Ping()

                  Also, Should ActionImmediate_Ping() and ActionImmediate_Chat() be unit-scoped? They should be player-scoped. If the chat function is global, then it can also be used in the hero selection like some wanted/asked
                  The ping should not need a unit handle either, but I am just asking
                  Last edited by The Nomad; 11-12-2017, 12:17 PM.
                  Explanations on the normal, high and very high brackets in replays: here, here & here
                  Why maphacks won't work in D2: here

                  Comment


                  • #10
                    @Chris

                    Please add the game mode constants for Turbo Mode and the pick state constant for hero selection in Turbo Mode.

                    Also, considering this...
                    Captains Mode: Captains Mode now has an extra ban in the first phase (6 bans total in the mode).
                    ... we'll need the constants for bans 11 and 12. I am curious if the extra ban is only for CM or for all CM-based modes (such as reverse CM or Captain's Draft).

                    I'll keep updating this as I find more impacted (or missing) stuff so that Chris can have it in one place

                    Unrelated to Dueling Fates:
                    Does someone know what game modes these pick state constants are for? And I mean 100% know, not assumptions
                    • HEROPICK_STATE_FH_SELECT
                    • HEROPICK_STATE_BD_SELECT


                    Also what does this function do: IsPlayerInHeroSelectionControl() ?
                    Explanations on the normal, high and very high brackets in replays: here, here & here
                    Why maphacks won't work in D2: here

                    Comment


                    • #11
                      Originally posted by The Nomad View Post
                      @Chris

                      Please add the game mode constants for Turbo Mode and the pick state constant for hero selection in Turbo Mode.

                      Also, considering this...

                      ... we'll need the constants for bans 11 and 12. I am curious if the extra ban is only for CM or for all CM-based modes (such as reverse CM or Captain's Draft).

                      I'll keep updating this as I find more impacted (or missing) stuff so that Chris can have it in one place
                      Yep, we need it. BTW why http://docs.moddota.com/lua_bots_enums/ and http://docs.moddota.com/lua_server_enums/ now have the same content. Is this how it's supposed to be? I missed a lot of constant value that I need. This link https://developer.valvesoftware.com/..._Bot_Scripting doesn't have the constant value.

                      And can you add inactive ability API too Chris like Troll Melee Whirling Axes when he's on range form ( even though I can check for his attack range) or MK Primal Spring when he isn't in the tree. I use IsFullyCastable() to check for this but it always return true and IsHidden() always return false. That's why MK sometimes can jump from the ground instead of tree because I just add a check to tree within a small radius and it doesn't guarantee you for preventing MK using it from the ground or he'll just AFK.

                      Comment


                      • #12
                        I have a feeling the moddota guys mixed up the constants. I noticed them too today. A lot have no real purpose in the bot API. Or at least, not yet.
                        Explanations on the normal, high and very high brackets in replays: here, here & here
                        Why maphacks won't work in D2: here

                        Comment


                        • #13
                          Originally posted by The Nomad View Post
                          @Chris

                          Please add the game mode constants for Turbo Mode and the pick state constant for hero selection in Turbo Mode.

                          Also, considering this...

                          ... we'll need the constants for bans 11 and 12. I am curious if the extra ban is only for CM or for all CM-based modes (such as reverse CM or Captain's Draft).

                          I'll keep updating this as I find more impacted (or missing) stuff so that Chris can have it in one place

                          Unrelated to Dueling Fates:
                          Does someone know what game modes these pick state constants are for? And I mean 100% know, not assumptions
                          • HEROPICK_STATE_FH_SELECT
                          • HEROPICK_STATE_BD_SELECT


                          Also what does this function do: IsPlayerInHeroSelectionControl() ?

                          probably not such a big deal for captains draft considering the mode doesnt work at all anyway.... it is simply captains mode with most guys greyed out.... you can pick or ban anyone you like...

                          Comment


                          • #14
                            Originally posted by arz_on4dt View Post
                            And can you add inactive ability API too Chris like Troll Melee Whirling Axes when he's on range form ( even though I can check for his attack range) or MK Primal Spring when he isn't in the tree. I use IsFullyCastable() to check for this but it always return true and IsHidden() always return false. That's why MK sometimes can jump from the ground instead of tree because I just add a check to tree within a small radius and it doesn't guarantee you for preventing MK using it from the ground or he'll just AFK.
                            I regret this. Actually there is IsActivated() that will inform you that this kind of ability can be used. Not sure if it works for item that in backpack swap cool down.

                            Comment


                            • #15
                              The npc* files need to be updated. For example, I can't find meteor hammer or spirit vessel in the exported npc_items.txt from the bots folder.
                              Explanations on the normal, high and very high brackets in replays: here, here & here
                              Why maphacks won't work in D2: here

                              Comment

                              Working...
                              X