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(); } }
private void SelectSpacetugTarget() { MovementTemplates.ReturnRangeRuler(); TractorBeamToken token = new TractorBeamToken(TargetShip, SpacetugOwner.Owner); TargetShip.Tokens.AssignToken(token, SelectShipSubPhase.FinishSelection); }
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); }
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); }
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); }
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); }
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); } }
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 + "."); }
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); } }
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(); } }); }
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); } } }