Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Know Our Enemies #197

Open
Nostrademous opened this issue Mar 31, 2017 · 5 comments
Open

Know Our Enemies #197

Nostrademous opened this issue Mar 31, 2017 · 5 comments

Comments

@Nostrademous
Copy link
Owner

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.

@Nostrademous
Copy link
Owner Author

starting to add some variables/members to enemy_info.lua

@Nostrademous
Copy link
Owner Author

Nostrademous commented Apr 3, 2017

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.

@CsharpNoobDude
Copy link

Check this out, I found this file on the steam workshop.

-- generic database

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

@Nostrademous
Copy link
Owner Author

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.

@CsharpNoobDude
Copy link

We should also check for big, game-deciding spells. Black hole, Ravage, AA Ultimate, Chaos Meteor, Kunkka boat, Refresher orb, ....

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants