Esempio n. 1
0
    protected override State Execute(AIBehaviorTree aiBehaviorTree, params object[] parameters)
    {
        if (string.IsNullOrEmpty(this.TargetVarName))
        {
            return(State.Success);
        }
        Kaiju kaiju = aiBehaviorTree.Variables[this.TargetVarName] as Kaiju;

        if (kaiju == null || kaiju.IsTamed())
        {
            return(State.Success);
        }
        if (!(aiBehaviorTree.AICommander.Empire is MajorEmpire))
        {
            return(State.Success);
        }
        Army army;

        if (base.GetArmyUnlessLocked(aiBehaviorTree, "$Army", out army) != AIArmyMission.AIArmyMissionErrorCode.None)
        {
            return(State.Success);
        }
        if (this.aILayer_Trade.ArmiesThatTriedKaijuTameResourceTrading.Contains(army.GUID))
        {
            return(State.Success);
        }
        this.aILayer_Trade.ArmiesThatTriedKaijuTameResourceTrading.Add(army.GUID);
        return(State.Failure);
    }
Esempio n. 2
0
    private void KaijuLostEncounter(Kaiju kaiju, global::Empire stunner, bool setKaijuFree)
    {
        bool flag     = Amplitude.Unity.Runtime.Runtime.Registry.GetValue <bool>("Gameplay/Kaiju/KaijuAutoTameBeforeLoseEncounter", true);
        bool relocate = false;

        if (setKaijuFree)
        {
            flag     = false;
            relocate = true;
        }
        global::PlayerController server = this.KaijuEmpire.PlayerControllers.Server;

        if (kaiju.IsTamed())
        {
            MajorEmpire majorEmpire = kaiju.MajorEmpire;
            if (server != null)
            {
                OrderUntameKaiju order = new OrderUntameKaiju(kaiju, relocate, stunner.Index, flag);
                server.PostOrder(order);
            }
        }
        else if (flag)
        {
            if (server != null)
            {
                OrderTameKaiju order2 = new OrderTameKaiju(stunner.Index, kaiju, null);
                server.PostOrder(order2);
            }
        }
        else
        {
            this.Kaiju.ChangeToStunState(stunner);
            this.ResetRelocationETA();
        }
    }
Esempio n. 3
0
 private bool IsKaijuValidForTame(Army army, Kaiju kaiju, ref List <StaticString> failureFlags, bool checkNearbyKaijus = true)
 {
     if (army == null || kaiju == null)
     {
         failureFlags.Add(ArmyAction.NoCanDoWhileHidden);
         return(false);
     }
     if (checkNearbyKaijus && !this.IsKaijuNearby(kaiju, army))
     {
         failureFlags.Add(ArmyAction.NoCanDoWhileHidden);
         return(false);
     }
     if (kaiju.IsTamed())
     {
         failureFlags.Add(ArmyAction.NoCanDoWhileHidden);
         return(false);
     }
     if (kaiju.IsStunned())
     {
         failureFlags.Add(ArmyAction.NoCanDoWhileHidden);
         return(false);
     }
     if (ELCPUtilities.UseELCPSymbiosisBuffs && !ELCPUtilities.CanELCPTameKaiju(kaiju, this.TameCost, army.Empire))
     {
         failureFlags.Add(ArmyAction.NoCanDoWhileCannotAffordCosts);
         return(false);
     }
     return(true);
 }
Esempio n. 4
0
    private void CleanAfterEncounter(Kaiju kaiju, GameEntityGUID garrisonGUID, Encounter encounter)
    {
        bool setKaijuFree = false;
        bool flag         = false;

        foreach (Contender contender in encounter.GetAlliedContendersFromEmpire(kaiju.Empire))
        {
            if (contender.IsTakingPartInBattle && contender.GUID == garrisonGUID && contender.ContenderState == ContenderState.Defeated)
            {
                flag = true;
                break;
            }
        }
        if (kaiju.IsTamed())
        {
            switch (encounter.GetEncounterResultForEmpire(kaiju.Empire))
            {
            case EncounterResult.Draw:
                setKaijuFree = true;
                break;

            case EncounterResult.Victory:
                setKaijuFree = true;
                break;
            }
        }
        if (flag)
        {
            global::Empire          stunner = null;
            IEnumerable <Contender> enemiesContenderFromEmpire = encounter.GetEnemiesContenderFromEmpire(kaiju.Empire);
            if (enemiesContenderFromEmpire.Count <Contender>() > 0)
            {
                Contender contender2 = enemiesContenderFromEmpire.FirstOrDefault <Contender>();
                if (contender2.Empire != null)
                {
                    stunner = encounter.GetEnemiesContenderFromEmpire(kaiju.Empire).FirstOrDefault <Contender>().Empire;
                }
            }
            this.KaijuLostEncounter(kaiju, stunner, setKaijuFree);
        }
    }
    private List <IWorldPositionable> Execute_GetKaijus(AIBehaviorTree aiBehaviorTree, Army army, IGameService gameService, List <IWorldPositionable> unfilteredTargetList)
    {
        List <IWorldPositionable> list = new List <IWorldPositionable>();

        for (int i = 0; i < unfilteredTargetList.Count; i++)
        {
            Kaiju kaiju = null;
            if (unfilteredTargetList[i] is Kaiju)
            {
                kaiju = (unfilteredTargetList[i] as Kaiju);
            }
            else if (unfilteredTargetList[i] is KaijuArmy)
            {
                kaiju = (unfilteredTargetList[i] as KaijuArmy).Kaiju;
            }
            else if (unfilteredTargetList[i] is KaijuGarrison)
            {
                kaiju = (unfilteredTargetList[i] as KaijuGarrison).Kaiju;
            }
            if (kaiju != null)
            {
                if (this.TypeOfTarget == AIBehaviorTreeNode_Decorator_SelectTarget.TargetType.StunnedKaiju && !kaiju.IsTamed() && kaiju.IsStunned())
                {
                    list.Add(kaiju);
                }
                if (this.TypeOfTarget == AIBehaviorTreeNode_Decorator_SelectTarget.TargetType.WildKaiju && !kaiju.IsTamed() && kaiju.IsWild())
                {
                    list.Add(kaiju);
                }
                if (this.TypeOfTarget == AIBehaviorTreeNode_Decorator_SelectTarget.TargetType.TamedKaiju && kaiju.IsTamed())
                {
                    list.Add(kaiju);
                }
            }
        }
        return(list);
    }