public bool agentCharacterIsExpendable(Agent agent) { IEnumerable <Agent> nearbyAgents = base.Mission.GetNearbyAgents(agent.GetWorldPosition().AsVec2, 10f); BasicCharacterObject affectedCharacter = agent.Character; if (affectedCharacter != null) { if (affectedCharacter.getAttributes().Contains("Expendable")) { Helpers.Say(affectedCharacter.GetName() + " died, but is Expendable. Nearby allies lost 0 morale."); float moraleSum = 0f; nearbyAgents.ToList().ForEach(a => { VampireMoraleAgentComponent moraleComponent = a.GetComponent <VampireMoraleAgentComponent>(); if (moraleComponent != null) { moraleSum += moraleComponent.Morale; } else if (a.GetComponent <MoraleAgentComponent>() != null) { moraleSum += a.GetMorale(); } } ); float averageMorale = moraleSum / nearbyAgents.ToList().Count; Helpers.Say("Average morale of nearby allies: " + averageMorale); return(true); } } return(false); }
public override void OnAgentCreated(Agent agent) { base.OnAgentCreated(agent); if (agent.Character != null) { BasicCharacterObject character = agent.Character; List <string> attributeList = character.getAttributes(); foreach (string attribute in attributeList) { applyAgentComponentsForAttribute(attribute, agent); } if (agent.Character.Culture != null) { if (agent.Character.Culture.StringId.Equals("vampire")) { giveVampireComponentsToAgent(agent); } } } }