private void DoSecondAction(GenericShip ship) { if (!HostShip.HasToken(typeof(Tokens.StressToken)) && Phases.CurrentSubPhase.GetType() == typeof(SubPhases.ActionDecisonSubPhase)) { RegisterAbilityTrigger(TriggerTypes.OnFreeActionPlanned, PerformFreeAction); } }
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(); } }
private void IncreaseDefenceDiceNumber(ref int diceNumber) { if (HostShip.HasToken(typeof(WeaponsDisabledToken))) { diceNumber++; } }
private void UseAbility(object sender, System.EventArgs e) { if (HostShip.HasToken(typeof(WeaponsDisabledToken))) { HostShip.RemoveToken(typeof(WeaponsDisabledToken)); } HostShip.AssignToken(new StressToken(), DecisionSubPhase.ConfirmDecision); }
private void CheckStress(object sender, System.EventArgs e) { if (!HostShip.HasToken(typeof(StressToken))) { AskToUseAbility(AlwaysUseByDefault, UseAbility); } else { Triggers.FinishTrigger(); } }
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); } }
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(); } }
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); } }
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(); } }
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(); } }
private bool AIShouldUseAbility() { //TODO: more complex logic return(HostShip.HasToken(typeof(RedTargetLockToken), '*')); }