Dear Blizzard,
the latest patches caused many custom maps to malfunction or to even crash the game. I maintain the DotA 6.85 map for the Battle. net community and I’m trying my best to find bug fixes and workarounds for bugs or crashes. The latest versions are6.85ne14 /ne14a and they are currently the most hosted DotA maps in Battle. net.
I couldn’t fix all these problems without a dedicated player community who report bugs and crashes. Lately we encountered another crash which didn’t occur before the 1.3x patches either. I would be very grateful if you could take care of this problem since I think this could solve also many problems in other custom maps.
In DotA there is a hero called “Invoker” who can cast a fast moving Tornado. Every enemy unit that crosses its way is cycloned for up to 2.6 seconds, when the unit lands some damage is applied.
Moreover there is an item called “Eul’s Scepter” which gives its owner the ability to cyclone himself or an enemy unit. It is a common tactic to cyclone yourself to avoid incoming damage (since you’re invulnerable).
Problem:
When Invoker casts Tornado against an enemy unit and the owner of the unit that is cycloned massclicks on his Eul’s Scepter to get cycloned once more right after the Tornado ends, the game will crash. However the game will only crash after exact 9 mins of the game have passed (or 6-7 minutes in the DotA game timer). I tested this many times and there also other bugs which behave similarly which I managed to fix.
I created a simple test map with a hero that can cast tornado and and an item which can cast cyclone (like Eul’s scepter in DotA). I tested it several times there too and I got the same result. After I cast the spells as desribed above the game will crash / freeze but only after 9 minutes have passed. It also doesn’t matter if I spammed spells before or if I waited without casting spells / moving heroes.
I uploaded a video of my testmap (Link Below) . In the first 50 seconds I demonstrate the spells that are used. In minute 00:56 you see the spell sequence how it is supposed to work and which will later - after 9 minutes have passed - will crash the game.
https://www.youtube.com/watch?v=HqizUO7YET8
You can download my test map here:
https://www.epicwar.com/maps/299243/
Most code snippets are copy pasted from the DotA map. I deleted unecesseary stuff and wrote some comments.
How to reproduce the crash:
- Start the map in LAN mode with 2 players , in options set map to always visible (optional)
- (optional) Put Bloodmage on Control group 1 and Dread Lord on control group 2 (for faster selection)
- Wait 9-10 minutes, you can play around and test the spells, but make sure that the dreadlord has enough mana / hp when the 10 mins have passed.
(Note: The circles of power that appear are dummy casters, in a real game they wouldnt be visible and they’d be removed ofc, I kept these for visualization) - Click on the Bloodmage and use the Tornado ability. As Target choose a point towards the dreadlord. => It will cast a tornado and put the Dread Lord into a cyclone state
- While in Cyclone select the Dread Lord and spam click on the item (CycloneWand) in order to initiate a selfcast right after the Tornado effect ended.
=> Result: Game is freezing.
In various tests I figured that the check for the ‘bcy2’ buff causes issues (Or maybe the timer itself which performs the check) This is the same reason why some DotA games crash in Bnet since patch 1.3x .
Note: if you put a debug message in the getbcyc2 function the game will freeze immediately
If you are familiar with DotA you can reproduce this bug there too.
If you have further questions you can also contact me in the Hive Discord channel
(Tufuuu#7962 )
Thanks for your time and efforts.
With kind regards
Tufu