Dota 2
VULFT Bot Script
Visar 1–10 av 20 poster
< 1  2 >
Uppdatering: 29 apr, 2023 @ 9:24

v0.8a // 2023-04-29 (25th April meta) -- Dota 2 7.33
> Positioning
-| Fixed a positioning bug that made units stand strangely when near to attack times for last hitting creeps

> Warding
-| Increased the odds a hero will successfully ward when putting wards into the inventory rather than putting them back into the backpack.
-| Temporary fix

Uppdatering: 29 apr, 2023 @ 0:22

v0.8 // 2023-04-29 (25th April meta) -- Dota 2 7.33
> ADDED Capturing Outposts
-| Will try to clutch the capture if it gets dangerous
-| Abandons capture if it becomes too dangerous and the cast time is high, probably.

> ADDED Power treads switching
-| Heroes will now try to switch into intelligence for their spell casting.
-| Switch back to primary after a short moment.
-| Str for fear
-| Unviseral use agi for fighting
-| Switch to agi for bottle use
-| May switch to agi for consumable use

> Warding
-| Fixed the bug where heroes would stand idle at any point of the map for long periods of time when trying to ward.
-| Fixed data degradation of automaticly generated ward location. -- Warding will be much more sturdy for any map changes.

> General movement
-| Fixed many bugs with basic movement functions
-| Much more is planned for improving movement.

> Fight analytics
-| Bots will detect if a hero is directly moving towards them to attack, with a few very rare false positives.
-| Used in analytics for determining who on the team is drawing enemy's threat.

> Farming jungle during team pushes
-| Fixed a bug that prevented bots from farming jungle when a nearby allied player is pushing the wave
-| Previously, all heroes allocated to the lane would try to push the wave. (cores demagnatize from other cores unless the PushHarder metric is high)
-| Greedy and glass cannons are preferred for pushing the wave.
-| Hero selection for pushing creep waves while assisted is temporary, it will include a score increase for heroes that have high gank resistance sometime in the future.
-| Heroes with high physical offensive and defensive powers are preferred to assist the player by standing nearby and farming the jungle.
-| The selected, unrevealed or known-up pack to farm will advance along with the creep wave front.
-| If the number of players alive on the allied team is twice that or more of the enemy team, then this behaviour is disengaged, and they will push faster, so long as the PushHarder metric passes a certain limit. PushHarder is determined per-hero, but is strongly based on the state of the game. graph for more info[github.com]
-| I will probably make it so that the best physical power player still tries to get some jungle farm along with the push during PushHarder, as some heroes have push ability logic anyways, and more gold and xp gained during the time.
-| Players are included in the calcuation, but cannot influence the designated pusher decision; if an allied player is jungling nearby after the early game, and it is not near a bounty, for now, it might be because they think you pushing is a good idea.

> Buying regen
-| Fixed an issue introduced with the latest regen stock count fixes
-| Bots would not buy any regen in their original build (most regen).
-| Actually tested the fix, and confirmed it does work.

> Windrunner
-| Now stands more aggressively and away from heroes that are not her target during focus fire
-| Stands forward the more confident she is in the fight.
-| No longer affected by orb walking code, just stands to secure the kill where it is safest.

> Muerta
-| Fixed a bug preventing muerta using pierce when she is taking a lot of physical damage
-| Gains a slight fight incentive even when she enters ultimate in fear, which may cause her to turn the fight.

> Juggernaut
-| Increased odds of using healing ward.
-| Increased odds of using omnislash aggressively
-| -- Is based on values like nearby creeps and their closeness, if an attack damage wave clear item is held, if both teams are engaged in the fight, target's health.
-| Testing shows this is fairly good while improvement is possible, but other heroes will be implemented instead.

> Arc Warden
-| Fixed Arc not using escape curves for spark wraith fog of war.

> AoE ability location data logic
-| Fixed many bugs for targeting heroes in an AoE strip.
-| Fixed a bug that caused windrunner to shoot in an undefined direction if the target was not moving. i.e. the shot was not improvable based on wind's guess shot location.
-| Grimstroke now also uses this advanced location data scoring function for adjusting Stroke of Fate now, and will be more accurate. Needs improving to wait for comparitively good shots on many heroes, as windrunner already uses.

> Aggression threshold near towers
-| Fixed a bug with tower attack ranges for positioning considerations.
-| Heroes will chase to the correct distance when checking their power threshold to dive a tower.
-| E.g. previously, a low level hero who would not try to dive a tower would back out of fight_harass way too early because they thought they would be standing under tower while attacking a hero under tower.

> Item use improved
-| Fixed a bunch of issues with item use caused by thinking bots were not channeling an item that they had just started a cast of
-| Meteor hammer much more reliable

> Search Fog
-| Enemy missing events nearby to the allies around them are raised to score search_fog immediately to create the escape path.
-| More efficient chasing.

> Lots of other things, including some new bugs, and over aggression in lane.

Uppdatering: 22 apr, 2023 @ 0:56

v0.7d-230421 (10th April meta) - Updated for 7.33
> Fixed another missed check for tango item build clogging due to new stock count

Uppdatering: 22 apr, 2023 @ 0:26

v0.7d-230421 (10th April meta) - Updated for 7.33
> Corrected item_clarity and item_tango purchasing behaviour for stock counts in 7.33
-| Bots were infinitely trying to purchase tangos and clarities, failing to purchase, moving it up the item build list and then adding it again.

> Reduced the range of ward spot finding
-| The reduced range of ward finding on the larger map is still greater than it was on the previous map.
-| Reduces the amount of spurious wards found. Usually they aren't used anyways as the spurious locations are mostly around the Dire and Radiant fountains, where the front-line of each teams towers keep the ward location reserved as too dangerous for consideration (at least for now).
-| Still broken, they will place a few wards then my analytical height loc data will degrade due to a bug in the ward-correction algorithm bot's use.
-| Minor performance increase, especially during the start of the match.

Uppdatering: 21 apr, 2023 @ 17:39

v0.7c-230421 (10th April meta) - Updated for 7.33
> Fixed localization initialize error
-| Fixed a bug prevented chat commands to prompt for setting human's role with pings

> DEVELOPER:
-| Added a dev script to fully-automate packing for releases of VULFT into other languages.

Uppdatering: 21 apr, 2023 @ 10:42

v0.7c-230420 (10th April meta) - Updated for 7.33
> Fixed Zues bot not able to initialize.

> Juggernaut Blade Fury
-| Jug will stand to maximize AoE damage
-| He will also use attacks while in bladefury if he is ahead of an enemy to their fountain, or if the enemy is facing Jug, or stunned, rooted, etc, for attack procs.

Uppdatering: 20 apr, 2023 @ 21:37

v0.7b-230420 (10th April meta) - Updated for 7.33
> Hotfix runes init on Dire.

Uppdatering: 20 apr, 2023 @ 20:46

v0.7-230420 (10th April meta) - Updated for 7.33
> ADDED HERO Juggernaut

> Set your role at any time with '!pos [1 to 5]'

> More aggressive pushing when the enemy are dead
-| increasing probability of using the hard push behaviour during the early mid and to the late mid game when enemies are dead.
-| Still high but slightly reduced aggresivity unless enemies are dead in the very late game.
-| See "Metrics" on the git wiki for more info, if you know where that is and you are able to access that.

> search_fog (for recently fogged, vulnerable enemies) curves
-| search_fog now creates a bezier curve for a hero that has just gone missing.
-| the missing hero travels along it's facing direction and curves up into the enemy fountain at their movement speed.
-| these curves can be used for casting spells like spark wraith, ice vortex, lightning bolt in fog when an enemy was known to be worth searching for.
-| Still in testing, I need to push the initial point deeper so that heroes start movement wobble when they're at the expected point, not before.

> Greatly improved last-hitting
-| Incorporated hit-box to start attack time.
-| Fixed a data bug that causes last hit time landing to incorporate the walking distance to attack in the projectile distance.
-| Check for where a projectile leaves the hero and averages to new last hits before projectile release.
-| True attack point check.
-| FindTurnRate: Bots find their turn rate in [radians/sec] at the start of the match.
-| Still unfinished

> Improved warding
-| Fixed a bug where bots wouldn't know they owned wards after combining sentries and observers
-| However, warding is not working after the early game, investigating.
-| There were bugs in the auto-generation of ward high-ground spots that are showing themselves with the new map.
-| This will be used to improve the generic code for the future.

> Melee core laning perfomance
-| Melee cores switching to avoid_hide without a last hit may now agro the creep wave before they start to run away.
-| May help improve positioning for getting thier last hits

> Slightly increased denying creeps in lane.

> Slightly higher aggression when a deny is difficult, or unknown to succeed (atk dmg variation)

> Slightly reduced aggression when below HighUseMana value (the mana required to cast almost every spell known)

> Late-game ability use improved for some heroes
-| Fixed a bug where talents taken that changed an ability's behavoiur would be unusable.
-| Fixes things AoE Cold Feet, or AoE snot after buying aghs then leveling up.
-| Some abilities may still break but the main source of the issue is removed.

> Override/Dominate functionality improved
-| Things like solving why a hero is stuck is improved
-| A queue is allowed to allow better initialization and require less programming
-| used for FindTurnRate

> Added a time-till-attack threshold before engaging avoid_hide behaviour when laning near to creeps.
-| May help increase last-hitting performance.

> Reduced use tango on tree causing missed last hits

> Minor memory bug removed.
-| Fixed a bug causing last hit projection to keep a table of almost every attack registered in an entire match.
-| Amounted to, from a guess, 30-100KB / minute. 5MB for a long match.

> Buyback improved
-| Greatly reduced odds of buying back when the fight is at an outer tower and the bot's respawn timer is low.

> Deagro tower fix
-| Fixed bots being unable to think deagroing is worth it when they were actively attacking a tower.

> Some help text if anyone wants to force hero picks by changing the lines near the top of the hero_selection.lua file.

> Danger location analytics improved for some logic.
-| Found a major bug in danger analytics while trying to fix a static danger for deciding best lane to push / be around.
-| Heroes with blinks improved
-| ZoneDefend improved to find the danger of the zone defend location rather than the hero's current location.
-| Reverting a dangerous teleport to a higher tier tower needlessly, and teleporting into danger reduced.
-| Lane choice greatly improved, heroes are more likely leave dangerous lanes; not likely enough yet as they see far off lanes as a loss of score in time.

> Other improvement and tweaks.

> Localization and language changing with '!lang [en|zh|ru]'
-| Language choices are from total country esports earning in the game and pro players. Source: https://www.esportsearnings.com/games/231-dota-2/countries
-| Localization takes a long time, and I overloaded myself.
-| It's not a political statement, and it never will be, because nobody should get in trouble for relaxing or being entertained, within reason; but I do hope that list will be traversed deeper, and I do feel bad.

> Translation of page description to a handful of languages at https://steamcommunity.com/groups/VULFT/announcements/detail/6966546241858334331
-| This is in fairness to the global professional and amatuer communities, however I understand that pros do their best to keep their state-of-mind in the human game of Dota. I still think a lot can be learned in 0-pressure matches with bots.
-| This is based on Bot vs Bot performance of VULFT, and my own bots forcing me to lose matches due to the similarity of them to a higher calibre player, as a previous Ancient 3 try-hard.
-| This is arrogance, but only because I have not scientifically verified that my bots win more matches, and act more player-like (I'd say they do, and they do). But I don't have time. Fun for everyone!

DEVELOPER:
> Added language splitting to the release script to speed up releases to other languages / reduce risk of any party getting into trouble due to banned urls to development pages.

Uppdatering: 30 mar, 2023 @ 10:53

v0.6-230330 (19th March meta)
stability greatly improved, danger analytics fixed, returning to lane fix, better defense, windranger added

> ADDED HERO Windranger
-| Uses similar shot algorithms to Muerta for Shackle Shot, Powershot.
-| Introduces improved kill shot selection, including prioritizing heroes with high KDAs if multiple are vulnerable and in kill range -- to be added to other heroes in the future.

> ADDED human player lane and role selection
-| Set in the first minute of the match, respond to prompts by pinging your lane, then pinging top or bot for the desired role.
-| Optionally you may respond in chat "top"..."3"

> Crash removed
-| Fixed a crash that occured a bit less than 1/4 of the time a hero tried to deny themselves by dying to neutrals.
-| No unexpected crashes since removing this over 8+ games.
-| Project is now considered stable.

> Human laning, last hitting
-| When near to a set of enemy creeps, the bot code will now automatically register and lock-in last hits it thinks the player would go for based on the players deduced or set role.
-| Allies in lane will allow the player the last hit they expect they will take if the player is a higher role, but will take other enemy creep last hits if they are impossible / dying at the same time, as usual. i.e. a player can only lock-in one creep last hit at a time, and this allows others to take futher last hits.
-| Allies will take last hits in lane if able and the player is further than an amount plus their attack range to that creep.
-| When pushing behaviour is engaged, and allies are attacking high health creeps, they will probably continue to attack an arbitrary creep regardless of the player (arbitrary push target selection is temporary).

> More consistent behaviour
-| Short tasks like using items, consumables, picking up items, port, using abilities, deagro towers, will now set the task they interrupted back to the top of the scoring priority once they are finished

> Dotabuff builds
-| Fixed a bug where heroes who have unskillable additional abilities, like aghs shard abilities, would find their DotaBuff ability build broken and build automatically instead.
-| Fixed dotabuff ability builds for heroes with unskillable / purchasable abilities. Lina, Sniper, Tide, Viper, and otherwise a few unimplemented heroes
-| Added a bought boots more than once check (when creating item build data, not in-game logic), happens a bit. To be removed when build issue detection is more robust.
-| **Arcane boots disassembling and likely other disassembling is not detected in resulting DotaBuff data. This will be fixed sometime later.

> Avoid leeching experience
-| Bots now incentivise returning to their lane over time increasing.
-| Based on the futility of fighting in their current area when they're not in their designated lane, and have not broken the power/gamestate seal of being soft locked to their role's lane.
-| e.g. a core would feel "go away, you are only leeching experience" vs "nice gank"
-| Reduces with time, usually enough time to force a TP back to lane, or running across to the designated side of the map.
-| New code does not prevent approaching the wrong lane

> Danger analytics improved
-| Fixed a bug that caused bots to think enemies moved at about 2100 movement speed while fogged
-| Bots will become slightly more careful at the correct time based on missing enemies and the time they went fogged.
-| Bots will not randomly become careful for a moment a few seconds after enemies disappear from other lanes.
-| Better analytics for bots required for a safe bounty rune get, safe tower defense.
-| Prevents random over-teleporting to towers.

> Skittishness
-| Fixed a bug that caused heroes to think runes were more valuable than destroying an enemy ancient when allies outnumbered enemies in any nearby fight.

> Fixed selection of ability and mana use
-| Due to a bug, bots after leveling up one time considered their mana-tempo to be infinite, as if they would never run out
-| Bots now correctly use abilities based on various metrics per-ability, usually their own health percent, and their target-if-targetting's health percent, whichever is lower.
-| Bots will use regular nukes, stuns and slows quite freely when high mana. Logic for avoiding waste of large cooldown abilities is usually handcrafted.

> Improved teamplay
-| Fixed a bug that caused bots to gain score for considering moving to lanes that dead allies were previously in.

> Improved defending ancient
-| Fixed a bug that caused a lock on defending ancient aggressively and also some bots failing to check buybacks if a lower role bot had bought back, had the gold for buyback, but was dead.

> Improved pushing
-| Bots now better detect when it is safe to push enemy creeps under a tower. They may over-push and take more tower damage on occasion.
-| This should help with bots who leave from an easy T3 push.

> Improved last hitting while pushing
-| Cores are more likely to stop attacking an arbitrary creep if a last hit is nearby when pushing.

> Modified hero power analytics
-| Increased the maximum KDA factor of hero power. Bots will be more reluctant to fight heroes with high KDA until they think they have a good enough fight (allies contributing)
-| Bounty rune collection and tower defense will require more bot cooperation when defending against high KDA players/bots. (greedy bots can reject defense to continue farming, now high KDA players will attract more attention when pushing).
-| If the bots cannot gather a strong enough defense they may abandon the tower defense task altogether, as usual.
-| A lack of remaining mana percent is also now slightly more weighted towards a loss of power.

> Improved response to early game pushing
-| The soft-lock that attempts to prevent players from not farming in traditional role lanes has had it's requirements changed
-| If a player is over level 3, in addition to other checks, the lowest tier 2 team tower's health reduces the physical combat efficacy requirement to lane freely.
-| Bots will not attempt to stay in their designated lanes when a T2 has been destroyed.

> Improved fight analytics
-| Fixed a bug where heroes casting a spell on a player allied to them would invalidate their intended fight target data and target focus intensity data.

> Added muted check for using items

> Clockwerk
-| Players picking Clock was broken in the previous release and has been fixed thanks to player feedback.

> Meepo
-| Players picking Meepo was also broken, now fixed.

> Abaddon
-| Fixed strange behaviour when trying to cast mist coil on himself.
-| Will save allies with Q and W, allies with W have fight behaviour slightly incentivised to use the shield.

> Entrantress
-| Sproink is now actually working, but is probably overused when being aggressive due to flip states, indicating activity type bugs (aggressive mode task dip-outs).
-| May be a bug with finding the right facing direction before using.

> Defiler
-| Fixed overuse of crypt swarm on creeps while pushing and feeling safe

> Improved channelled spell behaviour
-| Fixed a bug causing most channel spells to only last 1 second.
-| Cancellation of spells is coded per-hero, but otherwise will channel until the completion of the cast.

> Player hero picking
-| Provided the load calls in unimplemented hero files. This allows the bots to load the DotaBuff data for any hero, including all the heroes the bots cannot play, this should improve lane selection.

> Untested heroes
-| Along with loading all DotaBuff hero data, if a hero is loaded that is untested, an alert will show, but the game should continue as normal, with them either never using abilities or acting silly.

> Reduced unexpected application behaviour due to movement and checking unseen units data

... AND MORE... See CHANGE_LOG.txt

Uppdatering: 17 mar, 2023 @ 1:57

v0.5-230317 (11th March meta)
Improved combat, increased tempo, improved item use, muerta

> Added fast picking command '/all !fast' in chat

> ADDED HERO: Muerta
-| Finds shots based on the average shot value she sees while able to shoot, scoring for accuracy, hitting two, hitting fighting intent target, getting a fear (tree shots), and reducing the shot length to disallow dodging
-| The Calling usage unfinished
-| Physical damage incoming detection may be bugged for triggering ultimate.
-| Does not yet know she may attack ethereal units
> ADDED TEST HERO: Tidehunter
-| Generic ability use (based on ability flags, cast at targets intelligently, but the abilities are not hard-coded)

> Enchantress
-| Sproink is now used defensively

> Many other hero tweaks

> Fixed a location data bug that made bots sometimes think one enemy was in at the location which was an average of the locations of enemies nearby
-| Improved aggressive fighting
-| Improved early game laning and early game group fighting
-| Less shaky movement during and before fights
-| More accurate danger/safety assessment

> Fixed heroes being picked multiple times

> Buyback: Added simplistic check, has false positives and surious behaviour after buying back, like teleporting to a place not related to the objective/fight under pressure

> Fort under attack: Heroes may become ridiculously aggressive when the fort is under attack. Temperory behaviour, but better than wandering.

> Jungle abilities: Added simplistic jungle ability handling, e.g. doom secondary abilities

> Push: Fixed a bug with game pausing reducing push scores when enemy creeps are not visible in the lane

> Push: Fixed a bug where towers that weren't visible would lock heroes into an impossible push task, immobilizing them, mainly/only on Tier-1s.

> Map positioning and grand strategy: When choosing a good lane to aim to operate in, bots now take more care of each other,
flip flop less, push as a team, and cores may push alone if the lane seems safe.

> Increased use of danger analysis for avoiding farming behaviour

> Introduced some bugs where heroes will TP to the wrong lane in the early game

> Enabled the use of force staff (only hurricane pike was enabled)

> Will now sometimes use force_staff/hurricane_pike aggressively with direct movement

> Very basic soul_ring use, tries to avoid any unwanted health loss

> Reduced tendancy of returning to fountain when low health if not in immediate danger or expected danger and more enemy players are dead than allies

> Boots are now evaluated as much more valuable for selling junk

> Fixed a bug where only one tower at a time were able to be known as safe to attack without drawing agro. Technically if an allied creeps close to other creeps is attacking a shrine like an idiot while the rest of the set attacks a tower, it may cause the tower to be missed, but screw that creep anyways

> Added some test increases to pushing behaviour when enemies are dead.

> Many other minor fixes and tweaks. Some are test behaviour and might be changed back or removed, like jungling while pushing a lane with teammates.

> Stability: Application crash every so often.

> Updated meta