Managing a complex AI project for DOTA requires precision and consistency, especially when dealing with the underlying logic of hero abilities. As the lead developer, I have spent significant time refining our data entry framework to ensure the AI behaves predictably and effectively during gameplay. However, due to current project demands and the departure of previous team members, I am looking for contributors to assist with the critical task of skill data entry.
I have recently upgraded our data entry functions and codebase to improve modularity and performance. Because of these structural changes, all existing skill data must be redefined to align with the new architecture. Currently, I am handling the entry for over 400 skills solo. While I am committed to the project, this workload is substantial and will likely take several months to complete without additional support. By expanding our team, we can significantly accelerate the development of the playable AI map.
If you are interested in contributing, please note that while I cannot offer financial compensation, I will formally add your name to our AI name database, ensuring your contribution is recognized by players interacting with the AI.
Technical Workflow and Examples
I have designed the new functions to be intuitive for anyone with a basic grasp of programming logic. If you understand the structure of these calls, you will be able to contribute effectively. I am happy to provide hands-on training to ensure you are comfortable reading and writing these scripts.
Example: Vengeful Spirit's Magic Missile
call SetAbilityBasic('A02A',4,1,2)
//Basic information: ID, level, learn level, level skip
call SetAbilityBasic_Bonus(1,NONE,1.75,1.75,10,95,NONE,500,NONE,'BPSE',NONE)
//Basic datas: cast time, last time, cool time, mana cost, area, ring, buffID, etc
call SetAbilityBasic_Bonus(2,NONE,1.75,1.75,10,110,NONE,500,NONE,'BPSE',NONE )
call SetAbilityBasic_Bonus(3,NONE,1.75,1.75,10,125,NONE,500,NONE,'BPSE',NONE )
call SetAbilityBasic_Bonus(4,NONE,1.75,1.75,10,140,NONE,500,NONE,'BPSE',NONE )
call SetAbilityCastTarget(ENEMY,ALLUNIT,UNITTARGET,true,false,false,false,t rue,false,false)
//Ability target: whom can be cast on by the skill
call SetAbilityAdvanced("thunderbolt",2)
//Advanced information: orderstring, effectnumber
call SetAbilityAdvanced_Bonus(1,DAMAGE,NORMAL_MAGIC,NONE,true,100,175,250,325)
//Advanced datas: completely describe how does the skill works
call SetAbilityAdvanced_Bonus(2,STUN,NONE,NONE,true,1.75,1.75,1.75,1.75)
Example: Enchantress's Untouchable
call SetAbilityBasic('A0DW',4,1,2)
call SetAbilityBasic_Bonus(1,NONE,NONE,NONE,NONE,NONE,NONE,NONE,NONE,NONE,NO NE)
call SetAbilityBasic_Bonus(2,NONE,NONE,NONE,NONE,NONE,NONE,NONE,NONE,NONE,NO NE)
call SetAbilityBasic_Bonus(3,NONE,NONE,NONE,NONE,NONE,NONE,NONE,NONE,NONE,NO NE)
call SetAbilityBasic_Bonus(4,NONE,NONE,NONE,NONE,NONE,NONE,NONE,NONE,NONE,NO NE)
call SetAbilityCastTarget(NONE,NONE,NONE,false,false,false,false,false,fals e,false)
call SetAbilityAdvanced(null,2)
call SetAbilityAdvanced_Bonus(1,TRIGGERCONDITION,ATTACKED,SELF,true,UNSTACKABLE ,NONE,NONE,NONE)
call SetAbilityAdvanced_Bonus(2,TRIGGERACTION,ASIMPROVEPERCENT,UNSTACKABLE,fals e,-0.20,-0.40,-0.60,-0.80)
call SetAbilityEffectTarget(ENEMY,ALLUNIT,NONE,false,true,false,false,false,f alse)
//Effect target: whom can be effected by the skill
For a comprehensive look at the full implementation, please refer to the attached documentation. If you have a passion for DOTA and an interest in game programming, I welcome you to join our data entry group. Please reply to this topic to get started, and I will guide you through the process.