Ejemplo n.º 1
0
        private void SelectSpacetugTarget()
        {
            ShotInfo shotInfo = new ShotInfo(SpacetugOwner, TargetShip, SpacetugOwner.PrimaryWeapons);

            if (shotInfo.InArc && shotInfo.Range == 1)
            {
                SelectShipSubPhase.FinishSelectionNoCallback();

                MovementTemplates.ReturnRangeRuler();

                Messages.ShowInfo("Spacetug Tractor Array: " + SpacetugOwner.PilotInfo.PilotName + " has assigned a Tractor Beam token to " + TargetShip.PilotInfo.PilotName);

                TractorBeamToken token = new TractorBeamToken(TargetShip, SpacetugOwner.Owner);

                if (SpacetugOwner.SectorsInfo.IsShipInSector(TargetShip, Arcs.ArcType.Bullseye) && SpacetugOwner.SectorsInfo.RangeToShipBySector(TargetShip, Arcs.ArcType.Bullseye) == 1)
                {
                    TargetShip.Tokens.AssignToken(token, AssignSecondTractorBeamToken);
                }
                else
                {
                    TargetShip.Tokens.AssignToken(token, CallBack);
                }
            }
            else
            {
                RevertSubPhase();
            }
        }
Ejemplo n.º 2
0
        private void SelectSpacetugTarget()
        {
            MovementTemplates.ReturnRangeRuler();
            TractorBeamToken token = new TractorBeamToken(TargetShip, SpacetugOwner.Owner);

            TargetShip.Tokens.AssignToken(token, SelectShipSubPhase.FinishSelection);
        }
Ejemplo n.º 3
0
        private void AssignSecondTractorBeamToken()
        {
            Messages.ShowInfo(TargetShip.PilotInfo.PilotName + " was in " + SpacetugOwner.PilotInfo.PilotName + "'s Bullseye arc: a second Tractor Beam token has been assigned");

            TractorBeamToken token = new TractorBeamToken(TargetShip, SpacetugOwner.Owner);

            TargetShip.Tokens.AssignToken(token, CallBack);
        }
Ejemplo n.º 4
0
        private void AssignSecondTractorBeamToken()
        {
            Messages.ShowInfo("Spacetug Tractor Array: Ship was in bullseye arc, second Tractor Beam token is assigned");

            TractorBeamToken token = new TractorBeamToken(TargetShip, SpacetugOwner.Owner);

            TargetShip.Tokens.AssignToken(token, CallBack);
        }
Ejemplo n.º 5
0
        protected virtual void TractorBeamEffect(object sender, System.EventArgs e)
        {
            Combat.DiceRollAttack.CancelAllResults();
            Combat.DiceRollAttack.RemoveAllFailures();

            TractorBeamToken token = new TractorBeamToken(Combat.Defender, Combat.Attacker.Owner);

            Combat.Defender.Tokens.AssignToken(token, Triggers.FinishTrigger);
        }
Ejemplo n.º 6
0
        private void UseAbility(object sender, System.EventArgs e)
        {
            DecisionSubPhase.ConfirmDecisionNoCallback();

            HostShip.SpendCharge();

            TractorBeamToken tractorBeamToken = new TractorBeamToken(ShipWithStressToken, HostShip.Owner);

            ShipWithStressToken.Tokens.AssignToken(tractorBeamToken, Triggers.FinishTrigger);
        }
Ejemplo n.º 7
0
        private void CheckForTractorBeam(GenericShip ship, Type tokenType)
        {
            if (tokenType != typeof(TractorBeamToken))
            {
                return;
            }

            ship.ChangeAgilityBy(-1);

            if (ship.Tokens.CountTokensByType(typeof(TractorBeamToken)) == 1 && ship.ShipBaseSize == BaseSize.Small)
            {
                TractorBeamToken token = (TractorBeamToken)ship.Tokens.GetToken(typeof(TractorBeamToken));
                token.Assigner.PerformTractorBeamReposition(ship);
            }
        }
Ejemplo n.º 8
0
        private void AssignExtraToken(System.Type tokenToAssign)
        {
            if (Token is TractorBeamToken)
            {
                GenericToken tractorToken = new TractorBeamToken(ShipWithToken, HostShip.Owner);
                ShipWithToken.Tokens.AssignToken(tractorToken, Triggers.FinishTrigger);
            }
            else
            {
                ShipWithToken.Tokens.AssignToken(tokenToAssign, Triggers.FinishTrigger);
            }

            Messages.ShowInfo(HostShip.PilotInfo.PilotName + ": Gained a Stress Token to assign an additional " + tokenToAssign.Name
                              + " to " + ShipWithToken.PilotInfo.PilotName + ".");
        }
Ejemplo n.º 9
0
        private void CheckForTractorBeam(GenericShip ship, Type tokenType)
        {
            if (tokenType != typeof(TractorBeamToken))
            {
                return;
            }

            if (ShouldDecreaseAgility(ship))
            {
                ship.ChangeAgilityBy(-1);
            }

            if (IsTractorBeamReposition(ship))
            {
                TractorBeamToken token = (TractorBeamToken)ship.Tokens.GetToken(typeof(TractorBeamToken));
                token.Assigner.PerformTractorBeamReposition(ship);
            }
        }
Ejemplo n.º 10
0
        private void PerformTractorBeamEffect(GenericShip ship)
        {
            TractorBeamToken token = (TractorBeamToken)ship.Tokens.GetToken(typeof(TractorBeamToken));

            SubPhases.TractorBeamPlanningSubPhase newPhase = (SubPhases.TractorBeamPlanningSubPhase)Phases.StartTemporarySubPhaseNew(
                "Perform tractor beam effect",
                typeof(SubPhases.TractorBeamPlanningSubPhase),
                Triggers.FinishTrigger
                );
            newPhase.Assigner = token.Assigner;
            newPhase.TheShip  = ship;

            Triggers.RegisterTrigger(new Trigger()
            {
                Name         = "Perform tractor beam",
                TriggerType  = TriggerTypes.OnTokenIsAssigned,
                TriggerOwner = token.Assigner.PlayerNo,
                EventHandler = delegate {
                    newPhase.Start();
                }
            });
        }
Ejemplo n.º 11
0
        private void AssignToken(int shipId, Type tokenType, int targetShipId)
        {
            GenericShip ship = Roster.AllShips.FirstOrDefault(n => n.Key == "ShipId:" + shipId).Value;

            if (ship != null)
            {
                if (tokenType == typeof(BlueTargetLockToken))
                {
                    if (targetShipId != -1)
                    {
                        GenericShip targetShip = Roster.AllShips.FirstOrDefault(n => n.Key == "ShipId:" + targetShipId).Value;
                        if (targetShip != null)
                        {
                            ActionsHolder.AcquireTargetLock(ship, targetShip, ShowMessage, ShowErrorMessage);
                        }
                        else
                        {
                            ShowHelp();
                        }
                    }
                    else
                    {
                        ShowHelp();
                    }
                }
                else if (tokenType == typeof(TractorBeamToken))
                {
                    GenericShip      targetShip = Roster.AllShips.FirstOrDefault(n => n.Key == "ShipId:" + targetShipId).Value;
                    TractorBeamToken token      = new TractorBeamToken(ship, targetShip.Owner);
                    ship.Tokens.AssignToken(token, ShowMessage);
                }
                else
                {
                    GenericToken token = (GenericToken)System.Activator.CreateInstance(tokenType, ship);
                    ship.Tokens.AssignToken(token, ShowMessage);
                }
            }
        }