public bool IsShotAvailable(GenericShip targetShip) { bool result = true; int minRange = WeaponInfo.MinRange; int maxRange = WeaponInfo.MaxRange; HostShip.CallUpdateWeaponRange(this, ref minRange, ref maxRange, targetShip); ShotInfo shotInfo = new ShotInfo(HostShip, targetShip, this); if (!shotInfo.IsShotAvailable) { return(false); } if (shotInfo.Range < minRange) { return(false); } if (shotInfo.Range > maxRange) { return(false); } return(result); }
public virtual bool IsShotAvailable(GenericShip targetShip) { bool result = true; int MinRangeUpdated = WeaponInfo.MinRange; int MaxRangeUpdated = WeaponInfo.MaxRange; HostShip.CallUpdateWeaponRange(this, ref MinRangeUpdated, ref MaxRangeUpdated); if (!State.IsFaceup) { return(false); } if (State.UsesCharges && State.Charges == 0) { return(false); } ShotInfo shotInfo = new ShotInfo(HostShip, targetShip, this); int range = shotInfo.Range; if (!shotInfo.IsShotAvailable) { return(false); } if (range < MinRangeUpdated) { return(false); } if (range > MaxRangeUpdated) { return(false); } if (!AreTokenRequirementsMet(targetShip)) { return(false); } return(result); }
public virtual bool IsShotAvailable(GenericShip targetShip) { bool result = true; int MinRangeUpdated = WeaponInfo.MinRange; int MaxRangeUpdated = WeaponInfo.MaxRange; HostShip.CallUpdateWeaponRange(this, ref MinRangeUpdated, ref MaxRangeUpdated); if (!State.IsFaceup) { return(false); } if (State.UsesCharges && State.Charges == 0) { return(false); } ShotInfo shotInfo = new ShotInfo(HostShip, targetShip, this); int range = shotInfo.Range; if (!shotInfo.IsShotAvailable) { return(false); } if (range < MinRangeUpdated) { return(false); } if (range > MaxRangeUpdated) { return(false); } Type tokenRequirement = HostShip.GetWeaponAttackRequirement(this, isSilent: true); if (tokenRequirement == typeof(BlueTargetLockToken)) { List <GenericToken> waysToPay = new List <GenericToken>(); List <char> letters = ActionsHolder.GetTargetLocksLetterPairs(HostShip, targetShip); GenericToken targetLockToken = HostShip.Tokens.GetToken(typeof(BlueTargetLockToken), letters.FirstOrDefault()); if (targetLockToken != null) { waysToPay.Add(targetLockToken); } HostShip.CallOnGenerateAvailableAttackPaymentList(waysToPay); if (waysToPay.Count == 0) { return(false); } } else if (tokenRequirement != null) { if (!HostShip.Tokens.HasToken(tokenRequirement)) { return(false); } } return(result); }