示例#1
0
    protected override bool IsMainTransfer(ArmyWithTask army)
    {
        NavyArmy navyArmy = army as NavyArmy;

        if (navyArmy != null)
        {
            NavyTask_Reinforcement navyTask_Reinforcement = navyArmy.NavyLayer.FindTask <NavyTask_Reinforcement>((NavyTask_Reinforcement match) => match.TargetGuid == army.Garrison.GUID);
            if (navyTask_Reinforcement == null || navyTask_Reinforcement.AssignedArmy == null || navyTask_Reinforcement.AssignedArmy.Garrison == null || navyTask_Reinforcement.AssignedArmy.Garrison.GUID != army.MainAttackableTarget.GUID)
            {
                return(true);
            }
        }
        return(base.IsMainTransfer(army));
    }
示例#2
0
    protected BehaviorNodeReturnCode InvalidateBehavior(ArmyWithTask army)
    {
        BaseNavyTask baseNavyTask = army.CurrentMainTask as BaseNavyTask;

        if (baseNavyTask == null || army.Garrison == null)
        {
            return(BehaviorNodeReturnCode.Failure);
        }
        if (army.MainAttackableTarget != null && army.MainAttackableTarget.IsInEncounter)
        {
            return(BehaviorNodeReturnCode.Failure);
        }
        baseNavyTask.ForbiddenGUIDs.Add(army.Garrison.GUID);
        army.BehaviorState = ArmyWithTask.ArmyBehaviorState.Succeed;
        return(BehaviorNodeReturnCode.Success);
    }
示例#3
0
    protected Amplitude.Unity.Game.Orders.Order GotoAndAttackOpportunity(ArmyWithTask army)
    {
        NavyArmy navyArmy = army as NavyArmy;

        if (navyArmy == null || navyArmy.OpportunityAttackableTarget == null)
        {
            return(null);
        }
        Army army2 = navyArmy.Garrison as Army;

        Diagnostics.Log("ELCP {0}/{1} succesfull GotoAndAttackOpportunity", new object[]
        {
            army2.Empire,
            army2.LocalizedName
        });
        return(new OrderGoToAndAttack(army.Garrison.Empire.Index, army.Garrison.GUID, navyArmy.OpportunityAttackableTarget.GUID, navyArmy.PathToSecondaryTarget));
    }