Open Nostrademous opened 7 years ago
starting to add some variables/members to enemy_info.lua
enemies have a guessed "lane" that they are in based on proximity to the lane they were last seen. -1 means unknown.
This should start getting us an overall picture of who is where and doing what.
Check this out, I found this file on the steam workshop.
local X = {}
-- ["carry"] will become more useful later in the game if they gain a significant gold advantage. -- ["durable"] has the ability to last longer in teamfights. -- ["support"] can focus less on amassing gold and items, and more on using their abilities to gain an advantage for the team. -- ["escape"] has the ability to quickly avoid death. -- ["nuker"] can quickly kill enemy heroes using high damage spells with low cooldowns. -- ["pusher"] can quickly siege and destroy towers and barracks at all points of the game. -- ["disabler"] has a guaranteed disable for one or more of their spells. -- ["initiator"] good at starting a teamfight. -- ["jungler"] can farm effectively from neutral creeps inside the jungle early in the game.
X["hero_roles"] = { ["npc_dota_hero_abaddon"] = { ['carry'] = 1, ['disabler'] = 0, ['durable'] = 2, ['escape'] = 0, ['initiator'] = 0, ['jungler'] = 0, ['nuker'] = 0, ['support'] = 2, ['pusher'] = 0 },
["npc_dota_hero_alchemist"] = {
['carry'] = 2,
['disabler'] = 1,
['durable'] = 2,
['escape'] = 0,
['initiator'] = 1,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 1,
['pusher'] = 0
},
["npc_dota_hero_axe"] = {
['carry'] = 0,
['disabler'] = 2,
['durable'] = 3,
['escape'] = 0,
['initiator'] = 3,
['jungler'] = 2,
['nuker'] = 0,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_beastmaster"] = {
['carry'] = 0,
['disabler'] = 2,
['durable'] = 2,
['escape'] = 0,
['initiator'] = 2,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_brewmaster"] = {
['carry'] = 1,
['disabler'] = 2,
['durable'] = 2,
['escape'] = 0,
['initiator'] = 3,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_bristleback"] = {
['carry'] = 2,
['disabler'] = 0,
['durable'] = 3,
['escape'] = 0,
['initiator'] = 1,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_centaur"] = {
['carry'] = 0,
['disabler'] = 1,
['durable'] = 3,
['escape'] = 0,
['initiator'] = 3,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_chaos_knight"] = {
['carry'] = 3,
['disabler'] = 2,
['durable'] = 2,
['escape'] = 0,
['initiator'] = 1,
['jungler'] = 0,
['nuker'] = 0,
['support'] = 0,
['pusher'] = 2
},
["npc_dota_hero_rattletrap"] = {
['carry'] = 0,
['disabler'] = 2,
['durable'] = 1,
['escape'] = 0,
['initiator'] = 3,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_doom_bringer"] = {
['carry'] = 1,
['disabler'] = 2,
['durable'] = 2,
['escape'] = 0,
['initiator'] = 2,
['jungler'] = 0,
['nuker'] = 0,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_dragon_knight"] = {
['carry'] = 2,
['disabler'] = 2,
['durable'] = 2,
['escape'] = 0,
['initiator'] = 1,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 0,
['pusher'] = 3
},
["npc_dota_hero_earth_spirit"] = {
['carry'] = 0,
['disabler'] = 1,
['durable'] = 1,
['escape'] = 2,
['initiator'] = 1,
['jungler'] = 0,
['nuker'] = 2,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_earthshaker"] = {
['carry'] = 0,
['disabler'] = 2,
['durable'] = 0,
['escape'] = 0,
['initiator'] = 3,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 1,
['pusher'] = 0
},
["npc_dota_hero_elder_titan"] = {
['carry'] = 0,
['disabler'] = 1,
['durable'] = 1,
['escape'] = 0,
['initiator'] = 2,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_huskar"] = {
['carry'] = 2,
['disabler'] = 0,
['durable'] = 2,
['escape'] = 0,
['initiator'] = 1,
['jungler'] = 0,
['nuker'] = 0,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_wisp"] = {
['carry'] = 0,
['disabler'] = 0,
['durable'] = 0,
['escape'] = 2,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 3,
['pusher'] = 0
},
["npc_dota_hero_kunkka"] = {
['carry'] = 1,
['disabler'] = 1,
['durable'] = 1,
['escape'] = 0,
['initiator'] = 1,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_legion_commander"] = {
['carry'] = 1,
['disabler'] = 2,
['durable'] = 1,
['escape'] = 0,
['initiator'] = 1,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_life_stealer"] = {
['carry'] = 2,
['disabler'] = 1,
['durable'] = 2,
['escape'] = 1,
['initiator'] = 0,
['jungler'] = 1,
['nuker'] = 0,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_lycan"] = {
['carry'] = 2,
['disabler'] = 0,
['durable'] = 1,
['escape'] = 1,
['initiator'] = 0,
['jungler'] = 1,
['nuker'] = 0,
['support'] = 0,
['pusher'] = 3
},
["npc_dota_hero_magnataur"] = {
['carry'] = 0,
['disabler'] = 2,
['durable'] = 0,
['escape'] = 1,
['initiator'] = 3,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_night_stalker"] = {
['carry'] = 1,
['disabler'] = 2,
['durable'] = 2,
['escape'] = 0,
['initiator'] = 2,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_omniknight"] = {
['carry'] = 0,
['disabler'] = 0,
['durable'] = 1,
['escape'] = 0,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 2,
['pusher'] = 0
},
["npc_dota_hero_phoenix"] = {
['carry'] = 0,
['disabler'] = 1,
['durable'] = 0,
['escape'] = 2,
['initiator'] = 2,
['jungler'] = 0,
['nuker'] = 3,
['support'] = 1,
['pusher'] = 0
},
["npc_dota_hero_pudge"] = {
['carry'] = 0,
['disabler'] = 2,
['durable'] = 2,
['escape'] = 0,
['initiator'] = 2,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_sand_king"] = {
['carry'] = 0,
['disabler'] = 2,
['durable'] = 0,
['escape'] = 2,
['initiator'] = 3,
['jungler'] = 1,
['nuker'] = 2,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_slardar"] = {
['carry'] = 2,
['disabler'] = 1,
['durable'] = 2,
['escape'] = 1,
['initiator'] = 2,
['jungler'] = 0,
['nuker'] = 0,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_spirit_breaker"] = {
['carry'] = 1,
['disabler'] = 2,
['durable'] = 2,
['escape'] = 1,
['initiator'] = 2,
['jungler'] = 0,
['nuker'] = 0,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_sven"] = {
['carry'] = 2,
['disabler'] = 2,
['durable'] = 2,
['escape'] = 0,
['initiator'] = 2,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_tidehunter"] = {
['carry'] = 0,
['disabler'] = 2,
['durable'] = 3,
['escape'] = 0,
['initiator'] = 3,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_shredder"] = {
['carry'] = 0,
['disabler'] = 0,
['durable'] = 2,
['escape'] = 2,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 3,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_tiny"] = {
['carry'] = 3,
['disabler'] = 1,
['durable'] = 2,
['escape'] = 0,
['initiator'] = 2,
['jungler'] = 0,
['nuker'] = 2,
['support'] = 0,
['pusher'] = 2
},
["npc_dota_hero_treant"] = {
['carry'] = 0,
['disabler'] = 1,
['durable'] = 1,
['escape'] = 1,
['initiator'] = 2,
['jungler'] = 0,
['nuker'] = 0,
['support'] = 3,
['pusher'] = 0
},
["npc_dota_hero_tusk"] = {
['carry'] = 0,
['disabler'] = 2,
['durable'] = 0,
['escape'] = 0,
['initiator'] = 2,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_abyssal_underlord"] = {
['carry'] = 0,
['disabler'] = 1,
['durable'] = 1,
['escape'] = 2,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 1,
['pusher'] = 0
},
["npc_dota_hero_undying"] = {
['carry'] = 0,
['disabler'] = 1,
['durable'] = 2,
['escape'] = 0,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 1,
['pusher'] = 0
},
["npc_dota_hero_skeleton_king"] = {
['carry'] = 2,
['disabler'] = 2,
['durable'] = 3,
['escape'] = 0,
['initiator'] = 1,
['jungler'] = 0,
['nuker'] = 0,
['support'] = 1,
['pusher'] = 0
},
["npc_dota_hero_antimage"] = {
['carry'] = 3,
['disabler'] = 0,
['durable'] = 0,
['escape'] = 3,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_arc_warden"] = {
['carry'] = 3,
['disabler'] = 0,
['durable'] = 0,
['escape'] = 3,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_bloodseeker"] = {
['carry'] = 1,
['disabler'] = 1,
['durable'] = 0,
['escape'] = 0,
['initiator'] = 1,
['jungler'] = 1,
['nuker'] = 1,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_bounty_hunter"] = {
['carry'] = 0,
['disabler'] = 0,
['durable'] = 0,
['escape'] = 2,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_broodmother"] = {
['carry'] = 1,
['disabler'] = 1,
['durable'] = 0,
['escape'] = 3,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 0,
['pusher'] = 3
},
["npc_dota_hero_clinkz"] = {
['carry'] = 2,
['disabler'] = 0,
['durable'] = 0,
['escape'] = 3,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 0,
['pusher'] = 1
},
["npc_dota_hero_drow_ranger"] = {
['carry'] = 2,
['disabler'] = 1,
['durable'] = 0,
['escape'] = 0,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 0,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_ember_spirit"] = {
['carry'] = 2,
['disabler'] = 1,
['durable'] = 0,
['escape'] = 3,
['initiator'] = 1,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_faceless_void"] = {
['carry'] = 2,
['disabler'] = 2,
['durable'] = 1,
['escape'] = 1,
['initiator'] = 3,
['jungler'] = 0,
['nuker'] = 0,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_gyrocopter"] = {
['carry'] = 3,
['disabler'] = 1,
['durable'] = 0,
['escape'] = 0,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_juggernaut"] = {
['carry'] = 2,
['disabler'] = 0,
['durable'] = 0,
['escape'] = 1,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 0,
['support'] = 0,
['pusher'] = 1
},
["npc_dota_hero_lone_druid"] = {
['carry'] = 2,
['disabler'] = 0,
['durable'] = 1,
['escape'] = 0,
['initiator'] = 0,
['jungler'] = 1,
['nuker'] = 0,
['support'] = 0,
['pusher'] = 3
},
["npc_dota_hero_luna"] = {
['carry'] = 2,
['disabler'] = 0,
['durable'] = 0,
['escape'] = 0,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 2,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_medusa"] = {
['carry'] = 3,
['disabler'] = 1,
['durable'] = 1,
['escape'] = 0,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 0,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_meepo"] = {
['carry'] = 2,
['disabler'] = 1,
['durable'] = 0,
['escape'] = 2,
['initiator'] = 1,
['jungler'] = 0,
['nuker'] = 2,
['support'] = 0,
['pusher'] = 1
},
["npc_dota_hero_mirana"] = {
['carry'] = 1,
['disabler'] = 1,
['durable'] = 0,
['escape'] = 2,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 1,
['pusher'] = 0
},
["npc_dota_hero_monkey_king"] = {
['carry'] = 2,
['disabler'] = 1,
['durable'] = 0,
['escape'] = 2,
['initiator'] = 1,
['jungler'] = 0,
['nuker'] = 0,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_morphling"] = {
['carry'] = 3,
['disabler'] = 1,
['durable'] = 2,
['escape'] = 3,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_naga_siren"] = {
['carry'] = 3,
['disabler'] = 2,
['durable'] = 0,
['escape'] = 1,
['initiator'] = 1,
['jungler'] = 0,
['nuker'] = 0,
['support'] = 1,
['pusher'] = 2
},
["npc_dota_hero_nyx_assassin"] = {
['carry'] = 0,
['disabler'] = 2,
['durable'] = 0,
['escape'] = 1,
['initiator'] = 2,
['jungler'] = 0,
['nuker'] = 2,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_phantom_assassin"] = {
['carry'] = 3,
['disabler'] = 0,
['durable'] = 0,
['escape'] = 1,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 0,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_phantom_lancer"] = {
['carry'] = 2,
['disabler'] = 0,
['durable'] = 0,
['escape'] = 2,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 0,
['pusher'] = 1
},
["npc_dota_hero_razor"] = {
['carry'] = 2,
['disabler'] = 0,
['durable'] = 2,
['escape'] = 0,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_riki"] = {
['carry'] = 2,
['disabler'] = 1,
['durable'] = 0,
['escape'] = 2,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 0,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_nevermore"] = {
['carry'] = 2,
['disabler'] = 0,
['durable'] = 0,
['escape'] = 0,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 3,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_slark"] = {
['carry'] = 2,
['disabler'] = 1,
['durable'] = 0,
['escape'] = 0,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_sniper"] = {
['carry'] = 2,
['disabler'] = 0,
['durable'] = 0,
['escape'] = 0,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_spectre"] = {
['carry'] = 3,
['disabler'] = 0,
['durable'] = 1,
['escape'] = 1,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 0,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_templar_assassin"] = {
['carry'] = 2,
['disabler'] = 0,
['durable'] = 0,
['escape'] = 1,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 0,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_terrorblade"] = {
['carry'] = 3,
['disabler'] = 0,
['durable'] = 0,
['escape'] = 0,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 0,
['pusher'] = 2
},
["npc_dota_hero_troll_warlord"] = {
['carry'] = 3,
['disabler'] = 1,
['durable'] = 1,
['escape'] = 0,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 0,
['support'] = 0,
['pusher'] = 1
},
["npc_dota_hero_ursa"] = {
['carry'] = 2,
['disabler'] = 1,
['durable'] = 1,
['escape'] = 0,
['initiator'] = 0,
['jungler'] = 1,
['nuker'] = 0,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_vengefulspirit"] = {
['carry'] = 0,
['disabler'] = 2,
['durable'] = 0,
['escape'] = 1,
['initiator'] = 2,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 3,
['pusher'] = 0
},
["npc_dota_hero_venomancer"] = {
['carry'] = 0,
['disabler'] = 1,
['durable'] = 0,
['escape'] = 0,
['initiator'] = 1,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 2,
['pusher'] = 1
},
["npc_dota_hero_viper"] = {
['carry'] = 1,
['disabler'] = 1,
['durable'] = 2,
['escape'] = 0,
['initiator'] = 1,
['jungler'] = 0,
['nuker'] = 0,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_weaver"] = {
['carry'] = 2,
['disabler'] = 0,
['durable'] = 0,
['escape'] = 3,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 0,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_ancient_apparition"] = {
['carry'] = 0,
['disabler'] = 1,
['durable'] = 0,
['escape'] = 0,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 2,
['pusher'] = 0
},
["npc_dota_hero_bane"] = {
['carry'] = 0,
['disabler'] = 3,
['durable'] = 1,
['escape'] = 0,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 2,
['pusher'] = 0
},
["npc_dota_hero_batrider"] = {
['carry'] = 0,
['disabler'] = 2,
['durable'] = 0,
['escape'] = 1,
['initiator'] = 3,
['jungler'] = 2,
['nuker'] = 0,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_chen"] = {
['carry'] = 0,
['disabler'] = 0,
['durable'] = 0,
['escape'] = 0,
['initiator'] = 0,
['jungler'] = 3,
['nuker'] = 0,
['support'] = 2,
['pusher'] = 2
},
["npc_dota_hero_crystal_maiden"] = {
['carry'] = 0,
['disabler'] = 2,
['durable'] = 0,
['escape'] = 0,
['initiator'] = 0,
['jungler'] = 1,
['nuker'] = 2,
['support'] = 3,
['pusher'] = 0
},
["npc_dota_hero_dark_seer"] = {
['carry'] = 0,
['disabler'] = 1,
['durable'] = 0,
['escape'] = 1,
['initiator'] = 1,
['jungler'] = 1,
['nuker'] = 0,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_dazzle"] = {
['carry'] = 0,
['disabler'] = 1,
['durable'] = 0,
['escape'] = 0,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 3,
['pusher'] = 0
},
["npc_dota_hero_death_prophet"] = {
['carry'] = 1,
['disabler'] = 1,
['durable'] = 0,
['escape'] = 0,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 0,
['pusher'] = 3
},
["npc_dota_hero_disruptor"] = {
['carry'] = 0,
['disabler'] = 2,
['durable'] = 0,
['escape'] = 0,
['initiator'] = 1,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 2,
['pusher'] = 0
},
["npc_dota_hero_enchantress"] = {
['carry'] = 0,
['disabler'] = 0,
['durable'] = 1,
['escape'] = 0,
['initiator'] = 0,
['jungler'] = 3,
['nuker'] = 1,
['support'] = 0,
['pusher'] = 2
},
["npc_dota_hero_enigma"] = {
['carry'] = 0,
['disabler'] = 2,
['durable'] = 0,
['escape'] = 0,
['initiator'] = 2,
['jungler'] = 3,
['nuker'] = 0,
['support'] = 0,
['pusher'] = 2
},
["npc_dota_hero_invoker"] = {
['carry'] = 1,
['disabler'] = 2,
['durable'] = 0,
['escape'] = 1,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 3,
['support'] = 0,
['pusher'] = 1
},
["npc_dota_hero_jakiro"] = {
['carry'] = 0,
['disabler'] = 1,
['durable'] = 0,
['escape'] = 0,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 2,
['support'] = 1,
['pusher'] = 2
},
["npc_dota_hero_keeper_of_the_light"] = {
['carry'] = 0,
['disabler'] = 1,
['durable'] = 0,
['escape'] = 0,
['initiator'] = 0,
['jungler'] = 1,
['nuker'] = 2,
['support'] = 3,
['pusher'] = 0
},
["npc_dota_hero_leshrac"] = {
['carry'] = 1,
['disabler'] = 1,
['durable'] = 0,
['escape'] = 0,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 3,
['support'] = 1,
['pusher'] = 3
},
["npc_dota_hero_lich"] = {
['carry'] = 0,
['disabler'] = 0,
['durable'] = 0,
['escape'] = 0,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 2,
['support'] = 3,
['pusher'] = 0
},
["npc_dota_hero_lina"] = {
['carry'] = 1,
['disabler'] = 1,
['durable'] = 0,
['escape'] = 0,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 3,
['support'] = 1,
['pusher'] = 0
},
["npc_dota_hero_lion"] = {
['carry'] = 0,
['disabler'] = 3,
['durable'] = 0,
['escape'] = 0,
['initiator'] = 2,
['jungler'] = 0,
['nuker'] = 3,
['support'] = 2,
['pusher'] = 0
},
["npc_dota_hero_furion"] = {
['carry'] = 1,
['disabler'] = 0,
['durable'] = 0,
['escape'] = 1,
['initiator'] = 0,
['jungler'] = 3,
['nuker'] = 1,
['support'] = 0,
['pusher'] = 3
},
["npc_dota_hero_necrolyte"] = {
['carry'] = 1,
['disabler'] = 1,
['durable'] = 1,
['escape'] = 0,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 2,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_ogre_magi"] = {
['carry'] = 0,
['disabler'] = 2,
['durable'] = 1,
['escape'] = 0,
['initiator'] = 1,
['jungler'] = 0,
['nuker'] = 2,
['support'] = 2,
['pusher'] = 0
},
["npc_dota_hero_oracle"] = {
['carry'] = 0,
['disabler'] = 2,
['durable'] = 0,
['escape'] = 1,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 3,
['support'] = 3,
['pusher'] = 0
},
["npc_dota_hero_obsidian_destroyer"] = {
['carry'] = 2,
['disabler'] = 1,
['durable'] = 0,
['escape'] = 0,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 2,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_puck"] = {
['carry'] = 0,
['disabler'] = 3,
['durable'] = 0,
['escape'] = 3,
['initiator'] = 3,
['jungler'] = 0,
['nuker'] = 2,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_pugna"] = {
['carry'] = 0,
['disabler'] = 0,
['durable'] = 0,
['escape'] = 0,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 2,
['support'] = 0,
['pusher'] = 2
},
["npc_dota_hero_queenofpain"] = {
['carry'] = 1,
['disabler'] = 0,
['durable'] = 0,
['escape'] = 3,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 3,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_rubick"] = {
['carry'] = 0,
['disabler'] = 1,
['durable'] = 0,
['escape'] = 0,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 2,
['pusher'] = 0
},
["npc_dota_hero_shadow_demon"] = {
['carry'] = 0,
['disabler'] = 2,
['durable'] = 0,
['escape'] = 0,
['initiator'] = 1,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 2,
['pusher'] = 0
},
["npc_dota_hero_shadow_shaman"] = {
['carry'] = 0,
['disabler'] = 3,
['durable'] = 0,
['escape'] = 0,
['initiator'] = 1,
['jungler'] = 0,
['nuker'] = 2,
['support'] = 2,
['pusher'] = 3
},
["npc_dota_hero_silencer"] = {
['carry'] = 1,
['disabler'] = 2,
['durable'] = 0,
['escape'] = 0,
['initiator'] = 2,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 1,
['pusher'] = 0
},
["npc_dota_hero_skywrath_mage"] = {
['carry'] = 0,
['disabler'] = 1,
['durable'] = 0,
['escape'] = 0,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 3,
['support'] = 2,
['pusher'] = 0
},
["npc_dota_hero_storm_spirit"] = {
['carry'] = 2,
['disabler'] = 1,
['durable'] = 0,
['escape'] = 3,
['initiator'] = 1,
['jungler'] = 0,
['nuker'] = 2,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_techies"] = {
['carry'] = 0,
['disabler'] = 1,
['durable'] = 0,
['escape'] = 0,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 3,
['support'] = 0,
['pusher'] = 0
},
["npc_dota_hero_tinker"] = {
['carry'] = 1,
['disabler'] = 0,
['durable'] = 0,
['escape'] = 0,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 3,
['support'] = 0,
['pusher'] = 2
},
["npc_dota_hero_visage"] = {
['carry'] = 0,
['disabler'] = 1,
['durable'] = 1,
['escape'] = 0,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 2,
['support'] = 1,
['pusher'] = 1
},
["npc_dota_hero_warlock"] = {
['carry'] = 0,
['disabler'] = 1,
['durable'] = 0,
['escape'] = 0,
['initiator'] = 2,
['jungler'] = 0,
['nuker'] = 0,
['support'] = 1,
['pusher'] = 0
},
["npc_dota_hero_windrunner"] = {
['carry'] = 1,
['disabler'] = 1,
['durable'] = 0,
['escape'] = 1,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 1,
['pusher'] = 0
},
["npc_dota_hero_winter_wyvern"] = {
['carry'] = 0,
['disabler'] = 2,
['durable'] = 0,
['escape'] = 0,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 1,
['support'] = 3,
['pusher'] = 0
},
["npc_dota_hero_witch_doctor"] = {
['carry'] = 0,
['disabler'] = 1,
['durable'] = 0,
['escape'] = 0,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 2,
['support'] = 3,
['pusher'] = 0
},
["npc_dota_hero_zuus"] = {
['carry'] = 0,
['disabler'] = 0,
['durable'] = 0,
['escape'] = 0,
['initiator'] = 0,
['jungler'] = 0,
['nuker'] = 3,
['support'] = 0,
['pusher'] = 0
}
}
X["phase_boots"] = { ["npc_dota_hero_abaddon"] = 1, ["npc_dota_hero_alchemist"] = 1, ["npc_dota_hero_gyrocopter"] = 1, ["npc_dota_hero_medusa"] = 1, ["npc_dota_hero_phantom_assassin"] = 1, ["npc_dota_hero_sniper"] = 1, ["npc_dota_hero_spectre"] = 1, ["npc_dota_hero_tiny"] = 1, ["npc_dota_hero_troll_warlord"] = 1, ["npc_dota_hero_alchemist"] = 1, ["npc_dota_hero_life_stealer"] = 1, ["npc_dota_hero_monkey_king"] = 1, ["npc_dota_hero_ember_spirit"] = 1, ["npc_dota_hero_juggernaut"] = 1, ["npc_dota_hero_lone_druid"] = 1, ["npc_dota_hero_razor"] = 1, ["npc_dota_hero_templar_assassin"] = 1, ["npc_dota_hero_ursa"] = 1, ["npc_dota_hero_doom_bringer"] = 1, ["npc_dota_hero_kunkka"] = 1, ["npc_dota_hero_legion_commander"] = 1, ["npc_dota_hero_night_stalker"] = 1, ["npc_dota_hero_bloodseeker"] = 1, ["npc_dota_hero_broodmother"] = 1, ["npc_dota_hero_mirana"] = 1, ["npc_dota_hero_invoker"] = 1, ["npc_dota_hero_lina"] = 1, ["npc_dota_hero_furion"] = 1, ["npc_dota_hero_windrunner"] = 1 }
function X.IsCarry(hero) return X["hero_roles"][hero]["carry"] > 0; end function X.IsDisabler(hero) return X["hero_roles"][hero]["disabler"] > 0; end function X.IsDurable(hero) return X["hero_roles"][hero]["durable"] > 0; end function X.HasEscape(hero) return X["hero_roles"][hero]["escape"] > 0; end function X.IsInitiator(hero) return X["hero_roles"][hero]["initiator"] > 0; end function X.IsJungler(hero) return X["hero_roles"][hero]["jungler"] > 0; end function X.IsNuker(hero) return X["hero_roles"][hero]["nuker"] > 0; end function X.IsSupport(hero) return X["hero_roles"][hero]["support"] > 0; end function X.IsPusher(hero) return X["hero_roles"][hero]["pusher"] > 0; end
function X.IsMelee(attackRange) return attackRange <= 320; end
function X.BetterBuyPhaseBoots(hero) return X["phase_boots"][hero] == 1; end
function X.GetRoleLevel(hero, role) return X["hero_roles"][hero][role]; end
function X.IsRemovedFromSupportPoll(hero) return hero == "npc_dota_hero_alchemist" or hero == "npc_dota_hero_naga_siren" or hero == "npc_dota_hero_skeleton_king" or hero == "npc_dota_hero_alchemist" end
function X.CanBeOfflaner(hero) return string.find(hero, "bounty_hunter") or ( X["hero_roles"][hero]["initiator"] > 0 and X["hero_roles"][hero]["disabler"] > 0 and X["hero_roles"][hero]["durable"] > 0 and X["hero_roles"][hero]["support"] == 0 ) end
function X.CanBeMidlaner(hero) return string.find(hero, "zuus") or string.find(hero, "templar_assassin") or ( X["hero_roles"][hero]["carry"] > 0 and ( X["hero_roles"][hero]["nuker"] > 1 or X["hero_roles"][hero]["pusher"] > 0 ) ) end
function X.CanBeSafeLaneCarry(hero)
return X["hero_roles"][hero]["carry"] > 1 and
(
( X["hero_roles"][hero]["nuker"] < 3 and X["hero_roles"][hero]["pusher"] < 3 ) or
( X["hero_roles"][hero]["escape"] > 0 and X["hero_roles"][hero]["nuker"] < 2 ) or
X["hero_roles"][hero]["nuker"] < 2 or
X["hero_roles"][hero]["jungler"] == 1
)
end
function X.CanBeSupport(hero) return not X.IsRemovedFromSupportPoll(hero) and X["hero_roles"][hero]["support"] > 0 and ( X["hero_roles"][hero]["carry"] < 2 or X["hero_roles"][hero]["nuker"] > 0 or X["hero_roles"][hero]["disabler"] > 0 ) end
function X.GetCurrentSuitableRole() local highestCarryValue; end
function X.CountValue(hero, role) local highest = 0; local TeamMember = GetTeamPlayers(GetTeam()) for i = 1, #TeamMember do
end
return highest;
end
return X
We already have that information with the hero_data.lua I created written by the python script I made. The only thing they added was setting roles to "0" for those that are not defined explicitely.
And yes, this is a start, but I feel like we will need more info still, as in timers for cooldowns of "disables" for those heroes that are "disables", etc.
We should also check for big, game-deciding spells. Black hole, Ravage, AA Ultimate, Chaos Meteor, Kunkka boat, Refresher orb, ....
I am thinking of writing a module to help set various global variable attributes for out bots to know about.
Things that they should watch out for, like for example, clustering when the enemy team has an enigma or lich or warlock, sticking around and waiting for Omni's Ult to expire rather than kiting/running-away while it's up, understanding of what stuns the opposition has, knowing what to do with minions like Enigma's eidolons, beastmaster boar/hawk, arc warden's double, understandings how to swap Bane's nightmare, etc. etc., etc.
I'm think of doing this in a dynamic fashion, rather than hardcoding logic for each possible hero and checking a large table.
We'll see.