public void EvaluateTeamTank(IsisEvaluateTeamTankEvent e, WeaponNode weapon, TeamTankNode targetTank) { TargetData targetData = e.TargetData; if (e.ShooterTeamKey != targetTank.teamGroup.Key) { base.Log.Debug("EvaluateTeamTank: enemy team"); targetData.Priority += 2f; } else { base.Log.Debug("EvaluateTeamTank: same team"); targetData.Priority++; HealthComponent health = targetTank.health; if (health.CurrentHealth != health.MaxHealth) { base.Log.Debug("EvaluateTeamTank: not full health"); targetData.Priority += 2f; } TemperatureComponent temperature = targetTank.temperature; if (temperature.Temperature > 0f) { base.Log.Debug("EvaluateTeamTank: positive temperature"); targetData.Priority += 5f; } else if (temperature.Temperature < 0f) { base.Log.Debug("EvaluateTeamTank: negative temperature"); targetData.Priority += 4f; } } }
public void AddEnemyComponent(NodeAddedEvent e, [Combine] TeamTankNode tank, [Context, JoinByBattle] SelfBattleUserAsTank userAsTank) { if (!tank.teamGroup.Key.Equals(userAsTank.teamGroup.Key)) { tank.Entity.AddComponent <EnemyComponent>(); } tank.Entity.AddComponent <TankFriendlyEnemyStatusDefinedComponent>(); }
public void ResendEvaluateTeamTank(TargetingEvaluateEvent e, WeaponNode weapon, [JoinByTank] TeamTankNode shooterTank) { long key = shooterTank.teamGroup.Key; List <DirectionData> .Enumerator enumerator = e.TargetingData.Directions.GetEnumerator(); while (enumerator.MoveNext()) { DirectionData current = enumerator.Current; List <TargetData> .Enumerator enumerator2 = current.Targets.GetEnumerator(); while (enumerator2.MoveNext()) { TargetData targetData = enumerator2.Current; base.NewEvent(new IsisEvaluateTeamTankEvent(targetData, key)).Attach(weapon).Attach(targetData.TargetEntity).Schedule(); } } }