This is my second post where I will look at some interesting bugs in StarCraft II Co-op. First we will look at Avenger and Diffusion mutators, then at few bugs on Miner Evacuation and finally at several bugs including teleport slingshot, Rattlesnake, artifact spawns on Malwarfare and others.
Just three weeks after posting my previous bug hunt article, patch 4.8.3 was released fixing many of the described bugs. That's great, and I'm glad I could help. But whether fixes will come or not, it was fun to research bugs for both of these articles.
Update: Several bugs were fixed in patch
4.8.4
Avenger
(Avenger = Enemy units gain increased attack speed, movement speed, armor, life, and life-regeneration when nearby enemy units die.)
Update: This issue has been fixed in patch 4.8.4
This bug is very common. You will often see Terran or Zerg attack waves with avenger buff before you killed even a single enemy unit.
It's caused by drop-pods in which attack waves are spawned. These drop-pods are not removed but killed instead, and will grant avenger buff to nearby enemy units. Protoss units are warped in, and won't get free avenger buff.
Diffusion
(Diffusion = Damage dealt to enemies is split evenly across all nearby units, including your own.)
Update: This issue has been fixed in patch 4.9.0
This bug is newly introduced in the last patch—when fixing the Talis bug I described in my previous article. So what's the issue? Every time diffusion triggers, the game crashes.
The Talis bug is successfully fixed in the current patch, damage from diffusion was changed and prevented from being amplified by Talis' Ricochet Glaive. However, the diffusion trigger still checks for the old damage effect. So now diffusion is amplifying itself until the game crashes.
Miner evacuation – Fast attack
Update: This issue has been fixed in patch 4.8.4
If you are playing Zeratul, there is a chance infested will attack you at the very start of the mission.
This is caused by the first artifact fragment that spawns at the start of the mission. If it happens to spawn in the "Infested Down Ramp Trigger" region (see image), it will cause infested to attack you.
Miner evacuation – Mind Control
Update: This issue has been fixed in patch 4.8.4
If you mind-control units from infested waves, you will lose them once the ship is defended.
There is no check for the unit owner before units are ordered to burrow and are removed.
Miner Evacuation – pings
Attack waves on Miner Evacuation will occasionally be without minimap pings.
This one is quite peculiar. I had the most fun with this bug. And while the explanation might be simple, reaching it wasn't straightforward.
Finally, a detective work. Who is the criminal? Was it the gardener? Nay, it was the Nydus Worm!
~ ~ ~
Nydus Worms will spawn near the ship at the expansion area. Units unload from these Nydus Worms and are sent as an attack wave. The problem is when a Nydus Worm is killed during unloading. It's because the attack wave is sent for the owner of the Nydus Worm, and if the Nydus Worm is dead for some time (fraction of a second is enough), the owner will return incorrectly. A special function is called with the purpose of hiding a minimap ping for this attack wave. However, the attack wave was sent for a nonexistent player, and so there isn't any wave, the function is not ready for that, and hides pings for all waves it can.
It can be tricky to replicate, but you only need to keep killing Nydus
Worms once they start unloading and monitor CM_CoopAI_DontPingWaves array.
Suggested fix:
- Save the owner of the Nydus worm into a variable at the start of the function
- Add checks to EnableDisableCoopAIWavePing function (next image) so things like this can't happen
Additional notes:
- Usually, this function would be limited by CM_CoopAIPlayer_AttackWaveHighWaterMark, but infested waves on Miner Evacuation will push it high quickly.
- Dead of Night mission has Nydus Worms as well, however, it uses a different function for unloading units and doesn't suffer from this.
- Claimer waves (waves going after ships before they start launching) use this function to hide minimap pings too. But there isn't the same danger as with Nydus Worms.
- There are more issues with this EnableDisableCoopAIWavePing function and its usage on Miner Evacuation.
- Enable/Disable parameter doesn't do anything
- For Claimer waves it won't hide their new ping only because you can't get units from "last created wave" (as it's used there)
- I don't know what's up with the last part. Unless it's bugged, like in this case, attack wave won't become "no wave" and the function will just time out. And AttackWavePlayerIterPrimary outside the loop is -1, so it can't set CM_CoopAI_DontPingWaves to anything anyway.
Teleport slingshot
Update: This issue has been fixed in patch 4.8.4
Now one funny bug. If you use two teleport abilities at once, they will stack.Blue arrow indicates Mothership Recall, and orange arrow added Medivac Pickup teleport. I don't know how this could be useful. However, it does let you teleport into unexplored areas on the map.
Rattlesnake & Stimpack
Update: This issue has been fixed in
patch 4.9.1 with a tiny Backswing added
Rattlesnake won't use his Stimpack when attacking, only when being attacked.
Nova's Elite Marines have a very similar Stimpack, and they use it when both attacking and being attacked. The difference lies in their weapons. Elite Marine's weapons have 0.75s backswing while Rattlesnake's weapon has none. Backswing is a delay after the attack and before the unit will start doing another action. It seems that lacking any backswing, there is no time for Rattlesnake to use his Stimpack in-between attacks. Adding even 0.01s backswing provides him with enough time to use his Stimpack.
Update: With no weapon backswing, a unit won't pass TargetIsFiringWeapon validator even when it's firing its weapon.
Energizer
Update: This issue has been fixed in patch 4.8.4
Energizer's Chrono Beam ability doesn't work on many units—these mainly include defensive structures and Zeratul's Legions.
Included defensive structures |
But still a lot of them are missing
|
|
Zeratul Legions are also not valid targets for Chrono Beam, but in this case it's because they are "uncommandable" and such units are excluded.
Rattlesnake and Blaster Billy won't be targeted by Chrono Beam automatically. Both of them have weapons with no backswing, and won't pass TargetIsFiringWeapon validator.
Overall, it limits the support Karax can provide to other commanders. Plus it's unintuitive that Chrono Beam can be used only on certain units and structures.
Psionic Storm & Shield Restore
Update: This issue has been fixed in patch 4.8.4
This one is probably just an oversight, but it does impact the effectiveness of Psionic Storms to restore shields. The issue is that the Psionic Storm doesn't restore shields of units that are under effect of Guardian Shell.
Let's say your Zealots run into the enemy, they trigger their Guardian Shell, and you cast a Psionic Storm on them. If you invested in the Plasma Surge upgrade, you would expect the Psionic Storm to replenish their shields, but that will not happen. And it's shame because this is the prime example where this mechanic would be useful.
HighArchonPsiStormFriendlySearch search effect has excluded invulnerable units, which includes units protected by triggered Guardian Shell.
Primal Mutalisk Revive
Update: This issue has been fixed in patch 4.8.4
This one is a bit strange. When Primal Reconstitution is researched, Primal Mutalisk used to morph into a cocoon before reviving with full health. However, at some point they stopped doing that. I tracked down the change, and it roughly coincided with this note in 4.2.0 patch (February 21, 2018)
This was added to the Primal Reconstitution ability:
<Flags index="Transient" value="1"/>
It's strange because Choker's tentacle attack can kill Primal Mutalisk regardless whether the ability has a transient flag or not.
However, this change affected whether Primal Mutalisks morph into a cocoon or not.
Having to morph into a cocoon might seem as a disadvantage. But in practice cocoons have low target priority, and it spreads out damage more evenly across the Mutalisk flock—increasing its overall survivability.
I would also recommend setting "Wait Until Stopped" flag off. With it on, Primal Mutalisk have to decelerate with one HP before morphing into a cocoon—which is silly.
Malwarfare – Artifacts
Update: This issue has been fixed in patch 4.8.4
Zeratul's second artifact can spawn in the second terminal on Malwarfare. Zeratul has no way to pick it up as air units aren't able to do so.
It's interesting because it seems that this bug was introduced later, after Zeratul was released. There have been some changes to Malwarfare. Patch 4.8.0 (December 18, 2018) even specifically mentioned problems with artifact spawning, but the issue still remains.
Around the time this patch was released, the starting position of player 01 was moved one distance to the south. This didn't affect the actual starting location of the main building, but it did affect the pattern of possible artifact spawns—and shifted it inside the second terminal.
Notice how the purple line is intersecting the second terminal.
There are few ways of fixing this. You can let air units pick up artifacts. You can exclude Cybros Lock directly in the function:
Or you can increase maxSearchRadius value in UserTypes for the second artifact on Malwarfare from 80 to 81. This pushes it a bit further and out of Cybros Lock. Further tweaks are possible, but just increasing this one value by one should do the trick.
Missions not ending
Update: This issue has been fixed in
patch 4.9.1 with a timer that does what I have suggested
I want to briefly come back to this issue about which I talked in my previous post.
Things can get stuck in the action queue. Conversations are causing some problems now, but in theory it could be anything. As a player, it feels pretty bad to not be able to finish the mission, especially if you successfully played it to the end. In my opinion, the victory sequence should be robust enough to give players the win even if something got stuck in the action queue.
One possible change is to add a time-limit for how long the victory sequence will wait (in red in the following image). If it's waiting for longer than that, something went clearly wrong, and it's better to interrupt it and proceed with the victory sequence.
FINAL NOTE
This concludes the second edition of bug hunt. I hope you found something
interesting in it. If you encounter any bugs yourself, report them on the
official
bug report forum.