Example #1
0
 private void DoSecondAction(GenericShip ship)
 {
     if (!HostShip.HasToken(typeof(Tokens.StressToken)) && Phases.CurrentSubPhase.GetType() == typeof(SubPhases.ActionDecisonSubPhase))
     {
         RegisterAbilityTrigger(TriggerTypes.OnFreeActionPlanned, PerformFreeAction);
     }
 }
Example #2
0
        private void StartSubphaseForColonelJendonAbility(object sender, System.EventArgs e)
        {
            if (HostShip.Owner.Ships.Count > 1 && HostShip.HasToken(typeof(Tokens.BlueTargetLockToken), '*'))
            {
                var pilotAbilityDecision = (ColonelJendonDecisionSubPhase)Phases.StartTemporarySubPhaseNew(
                    Name,
                    typeof(ColonelJendonDecisionSubPhase),
                    Triggers.FinishTrigger
                    );

                pilotAbilityDecision.InfoText = "Use Colonel Jendon's ability?";

                var blueTargetLocks = HostShip.GetAssignedTokens()
                                      .Where(t => t is Tokens.BlueTargetLockToken)
                                      .Select(x => (Tokens.BlueTargetLockToken)x)
                                      .OrderBy(y => y.Letter)
                                      .ToList();

                pilotAbilityDecision.AddDecision("No", DontUseColonelJendonAbility);

                blueTargetLocks.ForEach(l => {
                    var name = "Target Lock " + l.Letter;
                    pilotAbilityDecision.AddDecision(name, delegate { UseColonelJendonAbility(l.Letter); });
                    pilotAbilityDecision.AddTooltip(name, l.OtherTokenOwner.ImageUrl);
                });

                pilotAbilityDecision.DefaultDecision = "No";

                pilotAbilityDecision.Start();
            }
            else
            {
                Triggers.FinishTrigger();
            }
        }
Example #3
0
 private void IncreaseDefenceDiceNumber(ref int diceNumber)
 {
     if (HostShip.HasToken(typeof(WeaponsDisabledToken)))
     {
         diceNumber++;
     }
 }
Example #4
0
 private void UseAbility(object sender, System.EventArgs e)
 {
     if (HostShip.HasToken(typeof(WeaponsDisabledToken)))
     {
         HostShip.RemoveToken(typeof(WeaponsDisabledToken));
     }
     HostShip.AssignToken(new StressToken(), DecisionSubPhase.ConfirmDecision);
 }
Example #5
0
 private void CheckStress(object sender, System.EventArgs e)
 {
     if (!HostShip.HasToken(typeof(StressToken)))
     {
         AskToUseAbility(AlwaysUseByDefault, UseAbility);
     }
     else
     {
         Triggers.FinishTrigger();
     }
 }
Example #6
0
        private void CheckPilotAbility()
        {
            bool IsDifferentPlayer = (HostShip.Owner.PlayerNo != Combat.Attacker.Owner.PlayerNo);
            bool HasFocusTokens    = HostShip.HasToken(typeof(Tokens.FocusToken));

            Board.ShipDistanceInformation distanceInfo = new Board.ShipDistanceInformation(HostShip, Combat.Attacker);

            if (IsDifferentPlayer && HasFocusTokens && distanceInfo.Range < 3)
            {
                RegisterAbilityTrigger(TriggerTypes.OnAttackStart, AskDecreaseAttack);
            }
        }
Example #7
0
 private void ShowDecision(object sender, System.EventArgs e)
 {
     // check if this ship is stressed
     if (!HostShip.HasToken(typeof(Tokens.StressToken)))
     {
         // give user the option to use ability
         AskToUseAbility(ShouldUsePilotAbility, UseAbility);
     }
     else
     {
         Triggers.FinishTrigger();
     }
 }
Example #8
0
        private void ActivateCountermeasures(object sender, System.EventArgs e)
        {
            HostShip.ChangeAgilityBy(+1);
            Phases.OnRoundEnd += DeactivateCountermeasures;

            if (HostShip.HasToken(typeof(RedTargetLockToken), '*'))
            {
                AskToRemoveTargetLock();
            }
            else
            {
                HostUpgrade.TryDiscard(SubPhases.DecisionSubPhase.ConfirmDecision);
            }
        }
Example #9
0
 private void Ability(object sender, EventArgs e)
 {
     if (HostShip.Owner.Ships.Count > 1 && HostShip.HasToken(typeof(Tokens.FocusToken)))
     {
         SelectTargetForAbility(
             SelectAbilityTarget,
             new List <TargetTypes> {
             TargetTypes.OtherFriendly
         },
             new UnityEngine.Vector2(1, 3));
     }
     else
     {
         Triggers.FinishTrigger();
     }
 }
Example #10
0
 private void CheckStoreTokenAbility(object sender, System.EventArgs e)
 {
     if (HostShip.HasToken(typeof(FocusToken)))
     {
         if (!alwaysUseAbility)
         {
             AskToUseAbility(AlwaysUseByDefault, StoreToken, null, null, true);
         }
         else
         {
             DoStoreToken(Triggers.FinishTrigger);
         }
     }
     else
     {
         Triggers.FinishTrigger();
     }
 }
Example #11
0
 private bool AIShouldUseAbility()
 {
     //TODO: more complex logic
     return(HostShip.HasToken(typeof(RedTargetLockToken), '*'));
 }