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)); }
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); }
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)); }