#Bio Scanner Small Red Dots

1 messages · Page 1 of 1 (latest)

autumn hound
#

This is simply an informative report on previous findings to make it easier for the developers to implement a fix whenever they feel like it

Bugged Behaviour

  • Some enemies are shown as a tiny red dot
  • In the case of scouts, they can no longer be pinged / tracked
#

Main Causes

Caused when the bio scanner is wielded and the player is watching an enemy as they move 3 rooms away from it. The enemy will then be shown with a tiny red dot.

The troublesome code can be found in EnemyScanner.UpdateDetectedEnemies:
Decompiled C# code, so code may differ from original

// EnemyScanner.UpdateDetectedEnemies
if (enemyAgent != null)
{
  if (enemyAgent.Alive)
  {
    EnemyScannerDataObject scannerData = enemyAgent.ScannerData;
    if (scannerData.m_updateID + 20 > m_updateID)
    {
      UpdateAndRenderScannerData(enemyAgent, scannerData);
      if (scannerData.m_playSound)
      {
        scannerData.m_playSound = false;
        Sound.Post(EVENTS.PROXIMITYSCANNERDETECT);
      }
      m_detectedListIndex--;
      num2++;
      continue;
    }
  }
  enemyAgent.IsInDetectedList = false;
  enemyAgent.ScannerData = null; // Clears the EnemyScannerDataObject from enemy, removing its MaterialPropertyBlock color thus causing it to render as tiny red dot
                                 // Since m_hasDirtyScannerColor never gets reset after this point, the scanner data object here never gets re-set and thus
                                 // the tiny red dot persists
}
#

Steps to reproduce

  1. Enter R1A1
  2. Move to area D of Zone 49
  3. Face West, and align yourself so that you are looking at the security door to Zone 52
  4. Pull out the bio scanner
  5. Side step left, still facing west, through the small weak door going to Zone 49, Area E
  6. Enemies on your bio scanner through the west wall should disappear as you cross the 3 room boundary
  7. Side step right, still facing west, through the small door back into Zone 49, Area D
  8. Those missing enemies should return back as tiny red dots

Possible solutions

Mark the enemy scanner color as dirty when it gets set in the Getter / Setter:

// class EnemyAgent
public EnemyScannerDataObject ScannerData
{
  get
  {
    if (!m_hasScannerData)
    {
      m_scannerData = new EnemyScannerDataObject();
      m_hasScannerData = true;
    }
    return m_scannerData;
  }
  set
  {
    m_hasDirtyScannerColor = true; // Add this
    m_hasScannerData = value != null;
    m_scannerData = value;
  }
}

Attached Clips

Shows how to reproduce the bug in R1A1

autumn hound
zinc seal
#

This would REALLY be beneficial on a list somewhere
But this will do fine

autumn hound