Banner and Crosspost

March 5, 2019

Bug Hunt II

Bug Hunt II

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

I would like to give thanks for this small memorial in patch 4.8.3

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.

Terran drop-pods buffing an attack wave
Pop!

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.

Here, have a nice error message

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.

Diffusion trigger is checking for the old effect

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.

Possible artifact spawns (orange for the first artifact) and the region triggering infested attack
The trigger ordering infested to attack

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.

Infested Banshees burrowing and disappearing

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.

The function responsible for unit unloading and attack wave set up

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
The function disabling attack wave pings

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.
Use Medivac Pickup and Mothership Recall at the same time
Select medivac landing location here
But you find your units in a completely different location

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.

Rattlesnake has no time for drugs when shooting

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.

Chrono Beam works on one but not on the other
Included defensive structures
But still a lot of them are missing
  • Primal Wurm (Dehaka)
  • Greater Primal Wurm (Dehaka)
  • Tesseract Monolith (Zeratul)
  • Tesseract Monolith Projection (Zeratul)
  • Railgun Turret (Nova)
  • Auto Turret (Tychus)
  • Warhound Turret (Tychus)
  • Infested Missile Turret (Stukov)

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.

Expected situation – Zealot's shields are restored as the Guardian Shell protection ends

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.

Choker killing Primal Mutalisk (transient flag off)

However, this change affected whether Primal Mutalisks morph into a cocoon or not.

Comparison between now (transient flag on) and before (transient flag off)

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.

No artifact for you today, Zeratul!

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.

Possible artifact spawns on Malwarfare

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:

No Cybros Lock allowed in 4 distance

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.

With maxSearchRadius 81

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.

Run Mission Victory Sequence – added part in the red

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.

Recent posts

Recent posts

Copyright

© Blizzard Entertainment, Inc. All rights reserved. Wings of Liberty, Heart of the Swarm, Legacy of the Void, and StarCraft are trademarks or registered trademarks of Blizzard Entertainment, Inc. in the U.S. and/or other countries.
Powered by Blogger