public override bool IsFeasible(Creature agent) { if (EntityToKill == null) { return(false); } else { if (EntityToKill.IsDead) { return(false); } Creature ai = EntityToKill.GetChildrenOfTypeRecursive <Creature>().FirstOrDefault(); switch (Mode) { case KillType.Attack: { if (!agent.Faction.AttackDesignations.Contains(EntityToKill)) { return(false); } return(true); break; } case KillType.Chop: { if (!agent.Faction.ChopDesignations.Contains(EntityToKill)) { return(false); } return(true); break; } case KillType.Auto: { return(true); } } if (ai == null) { return(true); } Relationship relation = Alliance.Relationships[new Alliance.AlliancePair { AllianceA = ai.Allies, AllianceB = agent.Allies }]; return(relation == Relationship.Hates || relation == Relationship.Indifferent); } }
private void SetDisplayColor(Body body, Color color) { List <Tinter> sprites = body.GetChildrenOfTypeRecursive <Tinter>(); foreach (Tinter sprite in sprites) { sprite.VertexColorTint = color; } }
public override bool IsFeasible(Creature agent) { if (EntityToKill == null) { return(false); } else { if (EntityToKill.IsDead) { return(false); } Creature ai = EntityToKill.GetChildrenOfTypeRecursive <Creature>().FirstOrDefault(); switch (Mode) { case KillType.Attack: { if (!agent.Faction.AttackDesignations.Contains(EntityToKill)) { return(false); } return(true); break; } case KillType.Chop: { if (!agent.Faction.ChopDesignations.Contains(EntityToKill)) { return(false); } return(true); break; } case KillType.Auto: { return(true); } } if (ai == null) { return(true); } Relationship relation = PlayState.Diplomacy.GetPolitics(ai.Faction, agent.Faction).GetCurrentRelationship(); return(relation == Relationship.Hateful || relation == Relationship.Indifferent); } }
public override bool IsFeasible(Creature agent) { if (EntityToKill == null || EntityToKill.IsDead) { return(false); } else { Creature ai = EntityToKill.GetChildrenOfTypeRecursive <Creature>().FirstOrDefault(); switch (Mode) { case KillType.Attack: { if (!agent.Faction.AttackDesignations.Contains(EntityToKill)) { return(false); } return(true); } case KillType.Chop: { if (!agent.Faction.ChopDesignations.Contains(EntityToKill)) { return(false); } return(true); } case KillType.Auto: { return(true); } } Voxel target = new Voxel(); bool voxExists = PlayState.ChunkManager.ChunkData.GetVoxel(EntityToKill.Position, ref target); if (!voxExists || !PlanAct.PathExists(agent.Physics.CurrentVoxel, target, agent.AI)) { return(false); } if (ai == null) { return(true); } Relationship relation = PlayState.ComponentManager.Diplomacy.GetPolitics(ai.Faction, agent.Faction).GetCurrentRelationship(); return(relation == Relationship.Hateful || relation == Relationship.Indifferent); } }