Ejemplo n.º 1
0
        private void StartRemoteDeployment(object sender, EventArgs e)
        {
            SubPhases.DecisionSubPhase.ConfirmDecisionNoCallback();

            BombsManager.RegisterBombDropTriggerIfAvailable(
                HostShip,
                TriggerTypes.OnAbilityDirect,
                type: HostUpgrade.GetType()
                );

            Triggers.ResolveTriggers(
                TriggerTypes.OnAbilityDirect,
                FinishRemoteDeployment
                );
        }
Ejemplo n.º 2
0
        private void RegisterAutoblasterEffect()
        {
            if (Combat.ChosenWeapon.GetType() == HostUpgrade.GetType())
            {
                Combat.DiceRollAttack.CancelCritsFirst = true;

                foreach (Die die in Combat.DiceRollAttack.DiceList)
                {
                    if (die.Side == DieSide.Success)
                    {
                        die.IsUncancelable = true;
                    }
                }
            }
        }
Ejemplo n.º 3
0
 private void RegenShield(object sender, EventArgs e)
 {
     HostUpgrade.SpendCharge(() =>
     {
         HostShip.Tokens.AssignToken(typeof(WeaponsDisabledToken), () =>
         {
             if (HostShip.TryRegenShields())
             {
                 Sounds.PlayShipSound("R2D2-Proud");
                 Messages.ShowInfo(HostName + ": Shield is restored");
             }
             Triggers.FinishTrigger();
         });
     });
 }
Ejemplo n.º 4
0
        private bool SnapShotAttackFilter(GenericShip defender, IShipWeapon weapon, bool isSilent)
        {
            bool result = true;

            if (defender != snapShotTarget || !(weapon.GetType() == HostUpgrade.GetType()))
            {
                if (!isSilent)
                {
                    Messages.ShowErrorToHuman(
                        string.Format("Snap Shot target must be {0}, using Snap Shot weapon", snapShotTarget.PilotName));
                }
                result = false;
            }

            return(result);
        }
Ejemplo n.º 5
0
        private void UseChewbaccaCrewAbility(object sender, System.EventArgs e)
        {
            Sounds.PlayShipSound("Chewbacca");
            Messages.ShowInfo("Chewbacca (crew) has been used");

            Combat.CurrentCriticalHitCard = null;
            if (Selection.ActiveShip.TryRegenShields())
            {
                Messages.ShowInfo("1 shield has been restored");
            }
            else
            {
                Messages.ShowInfo("No shields could be restored");
            }
            HostUpgrade.TryDiscard(DecisionSubPhase.ConfirmDecision);
        }
Ejemplo n.º 6
0
        private void ActivateCountermeasures(object sender, System.EventArgs e)
        {
            Messages.ShowInfo(string.Format("{0} used Countermeasures.", HostShip.PilotInfo.PilotName));

            HostShip.ChangeAgilityBy(+1);
            Phases.Events.OnRoundEnd += DeactivateCountermeasures;

            if (HostShip.Tokens.HasToken(typeof(RedTargetLockToken), '*'))
            {
                SubPhases.DecisionSubPhase.ConfirmDecisionNoCallback();
                AskToRemoveTargetLock();
            }
            else
            {
                HostUpgrade.TryDiscard(SubPhases.DecisionSubPhase.ConfirmDecision);
            }
        }
Ejemplo n.º 7
0
            private void CheckRestoreCharge(GenericShip host)
            {
                if (HostShip.IsBumped)
                {
                    return;
                }

                if (HostShip.AssignedManeuver.ColorComplexity != Movement.MovementComplexity.Complex)
                {
                    return;
                }

                if (HostUpgrade.Charges < HostUpgrade.MaxCharges)
                {
                    HostUpgrade.RestoreCharge();
                    Messages.ShowInfo("Elusive: Charge is restored");
                }
            }
Ejemplo n.º 8
0
        private void DeployRemote(object sender, EventArgs e)
        {
            SubPhases.DecisionSubPhase.ConfirmDecisionNoCallback();

            BombsManager.RegisterBombDropTriggerIfAvailable(
                HostShip,
                TriggerTypes.OnAbilityDirect,
                type: HostUpgrade.GetType()
                );

            Triggers.ResolveTriggers(
                TriggerTypes.OnAbilityDirect,
                delegate {
                HostUpgrade.State.SpendCharge();
                Triggers.FinishTrigger();
            }
                );
        }
Ejemplo n.º 9
0
        private bool ForesightAttackFilter(GenericShip defender, IShipWeapon weapon, bool isSilent)
        {
            bool result = true;

            if (defender != foresightTarget)
            {
                if (!isSilent)
                {
                    Messages.ShowErrorToHuman(
                        string.Format("Foresight's target must be {0}", foresightTarget.PilotInfo.PilotName));
                }
                result = false;
            }
            else if (!(weapon.GetType() == HostUpgrade.GetType()))
            {
                if (!isSilent)
                {
                    Messages.ShowErrorToHuman("This attack must be Foresight attack");
                }
                result = false;
            }

            return(result);
        }
Ejemplo n.º 10
0
 private void DiscardModification()
 {
     HostUpgrade.Discard(SubPhases.DecisionSubPhase.ConfirmDecision);
 }
Ejemplo n.º 11
0
 private void RestoreCharge()
 {
     HostUpgrade.RestoreCharge();
 }
Ejemplo n.º 12
0
 protected void StealthDeviceCleanup(object sender, System.EventArgs e)
 {
     Messages.ShowError("Hit! Discarding Stealth Device!");
     HostUpgrade.Discard(Triggers.FinishTrigger);
 }
Ejemplo n.º 13
0
 private bool HasAttanniMinklink(GenericShip ship)
 {
     return(ship.UpgradeBar.GetUpgradesOnlyFaceup().Count(n => n.GetType() == HostUpgrade.GetType()) == 1);
 }
Ejemplo n.º 14
0
 private bool HasAttanniMinklink(GenericShip ship)
 {
     return(ship.UpgradeBar.GetInstalledUpgrades().Count(n => n.GetType() == HostUpgrade.GetType()) == 1);
 }
Ejemplo n.º 15
0
 private void DiscardUpgrade(System.Action callBack)
 {
     HostUpgrade.Discard(callBack);
 }
Ejemplo n.º 16
0
 protected virtual void FinishAbility()
 {
     HostUpgrade.TryDiscard(Triggers.FinishTrigger);
 }
Ejemplo n.º 17
0
 private void PayAbilityCost(Action<bool> callback)
 {
     HostUpgrade.SpendCharge(() => callback(true));
 }
Ejemplo n.º 18
0
 protected void StealthDeviceCleanup(object sender, System.EventArgs e)
 {
     Messages.ShowInfo("Stealth Device: This ship has suffered a hit! Discarding Stealth Device");
     HostUpgrade.Discard(Triggers.FinishTrigger);
 }
Ejemplo n.º 19
0
 protected override void PayActivationCost(Action callback)
 {
     HostUpgrade.SpendCharge();
     callback();
 }
Ejemplo n.º 20
0
 private void RegisterSpendChargeTrigger(GenericAction action)
 {
     HostShip.BeforeFreeActionIsPerformed -= RegisterSpendChargeTrigger;
     RegisterAbilityTrigger(TriggerTypes.OnFreeAction, delegate { HostUpgrade.SpendCharge(Triggers.FinishTrigger); });
 }
Ejemplo n.º 21
0
 private void DiscardUpgrade()
 {
     HostUpgrade.TryDiscard(Triggers.FinishTrigger);
 }
Ejemplo n.º 22
0
        private void AddForesightRestriction()
        {
            if (Combat.Attacker.ShipId == HostShip.ShipId && Combat.ChosenWeapon.GetType() == HostUpgrade.GetType())
            {
                Combat.Attacker.OnTryAddAvailableDiceModification += ForesightRestrictionForAttacker;
                Combat.Attacker.OnAttackFinish += RemoveFiresightRestrictionForAttacker;

                Combat.Defender.OnTryAddAvailableDiceModification += ForesightRestrictionForDefender;
                Combat.Defender.OnAttackFinish += RemoveForesightRestrictionForDefender;
            }
        }
Ejemplo n.º 23
0
 private void RemoveTargetLock(char letter)
 {
     HostShip.RemoveToken(typeof(RedTargetLockToken), letter);
     HostUpgrade.TryDiscard(SubPhases.DecisionSubPhase.ConfirmDecision);
 }
Ejemplo n.º 24
0
 private void DiscardThisUpgrade(object sender, System.EventArgs e)
 {
     HostUpgrade.TryDiscard(Triggers.FinishTrigger);
 }
Ejemplo n.º 25
0
 private void UseAbility(object sender, System.EventArgs e)
 {
     HostUpgrade.Discard(SufferRegularHits);
 }