private void CheckAbility(GenericShip ship, Type tokenType) { // To avoid infinite loop if (IsAbilityUsed) { return; } if (ship.Owner.PlayerNo == HostShip.Owner.PlayerNo) { return; } if (ActionsHolder.HasTargetLockOn(HostShip, ship)) { return; } TokenColors tokenColor = TokensManager.GetTokenColorByType(tokenType); if (tokenColor != TokenColors.Red && tokenColor != TokenColors.Orange) { return; } DistanceInfo distInfo = new DistanceInfo(HostShip, ship); if (distInfo.Range == 1 || distInfo.Range == 2) { ShipWithAssignedToken = ship; RegisterAbilityTrigger(TriggerTypes.OnTokenIsAssigned, AskAcquireTargetLock); } }
public bool HasTokenByColor(TokenColors tokensColor) { foreach (GenericToken tok in AssignedTokens) { if (tok.TokenColor == tokensColor) { return(true); } } return(false); }
public void RemoveAllTokensByColor(TokenColors color, Action callback) { GenericToken tokenToRemove = AssignedTokens.FirstOrDefault(token => token.TokenColor == color); if (tokenToRemove != null) { RemoveToken( tokenToRemove, delegate { RemoveAllTokensByColor(color, callback); } ); } else { callback(); } }
private void PettyOfficerThanissonEffect(GenericShip ship, GenericToken token) { TokenColors tokenColor = token.TokenColor; //During the Activation or Engagement Phase, after an enemy ship in your "arc standard //front" at range 0-1 gains a red or orange token, if you are not stressed, you may gain 1 stress //token. If you do, that ship gains 1 additional token of the type that it gained. if ((Phases.CurrentPhase is MainPhases.ActivationPhase || Phases.CurrentPhase is MainPhases.CombatPhase) && (tokenColor == TokenColors.Red || tokenColor == TokenColors.Orange) && token.GetType() != typeof(RedTargetLockToken) && !HostShip.Tokens.HasToken(typeof(StressToken)) && ship.Owner.PlayerNo != HostShip.Owner.PlayerNo && HostShip.SectorsInfo.IsShipInSector(ship, ArcType.Front) && HostShip.SectorsInfo.RangeToShipBySector(ship, ArcType.Front) <= 1) { ShipWithToken = ship; Token = token; RegisterAbilityTrigger(TriggerTypes.OnTokenIsAssigned, ShowDecision); } }