// Checks if the agent can see through the shadow private bool CheckShadow(Agent checker, string name) { Agent checkedAgent = Agents.Find(x => x.name == name); System.Random rand = new System.Random(); if (checkedAgent != null && ShadowMap.ContainsKey(checkedAgent)) { Dictionary <Agent, int> seenList = ShadowMap[checkedAgent]; if (!seenList.ContainsKey(checker)) { seenList.Add(checker, rand.Next(100)); } bool spotted = seenList[checker] > SpottingChance; if (spotted) { ShadowMap.Remove(checkedAgent); checkedAgent.Shadow = false; } return(spotted); } return(false); }