Exemple #1
0
        public static void Postfix(CastleGate __instance)
        {
            TeamAISiegeComponent aic = Mission.Current.AttackerTeam.TeamAI as TeamAISiegeComponent;

            if (__instance.GameEntity.HasTag("inner_gate"))
            {
                Main.Log("Inner gate destroyed!", true);
                foreach (Formation f in Mission.Current.PlayerTeam.FormationsIncludingSpecial)
                {
                    if (Main.IsPIC(f) && !f.IsAIControlled)
                    {
                        Traverse.Create(f).Method("DisbandAttackEntityDetachment").GetValue();
                    }
                }
            }
            if (__instance.GameEntity.HasTag("outer_gate"))
            {
                Main.Log("Outer gate destroyed!", true);
                foreach (MissionObject mo in Mission.Current.ActiveMissionObjects)
                {
                    foreach (Formation f in Mission.Current.PlayerTeam.Formations)
                    {
                        if (f.IsUsingMachine(mo as BatteringRam) && !aic.InnerGate.IsDestroyed && Main.IsPIC(f) && !f.IsAIControlled)
                        {
                            if (Mission.Current.PlayerTeam.IsAttacker)
                            {
                                Main.Log("Sending detachment to attack inner gate!", true);
                            }
                            Traverse.Create(f).Method("FormAttackEntityDetachment", aic.InnerGate.GameEntity).GetValue();
                        }
                    }
                }
            }
            if (Mission.Current.PlayerTeam.IsAttacker && aic.InnerGate.IsDestroyed && aic.OuterGate.IsDestroyed)
            {
                Main.Log("Charge when ready!", true);
            }
        }
Exemple #2
0
 public CastleGateAI(CastleGate gate)
     : base((UsableMachine)gate)
 {
     this._initialState = gate.State;
 }