private void Repair(GenericDamageCard damageCard) { DecisionSubPhase.ConfirmDecisionNoCallback(); TargetShip.Damage.FlipFaceupCritFacedown(damageCard); Triggers.FinishTrigger(); }
public void FlipFaceupCritFacedown(GenericDamageCard critCard) { critCard.DiscardEffect(); DamageCards.Remove(critCard); Messages.ShowInfo("Critical damage card \"" + critCard.Name + "\" is flipped facedown"); }
public void ExposeRandomFacedownCard(Action callback) { int randomIndex = UnityEngine.Random.Range(0, DamageCards.Count); GenericDamageCard randomCard = DamageCards[randomIndex]; randomCard.Expose(callback); }
private void CheckSecondRepair(GenericDamageCard damageCard) { if (HostUpgrade.State.Charges > 0 && damageCard.Type == CriticalCardType.Ship) { RegisterAbilityTrigger(TriggerTypes.OnFaceupDamageCardIsRepaired, AskToRepairAgain); } }
public void ProcessDrawnDamageCard(GenericDamageCard damageCard, EventArgs e) { AssignedDamageDiceroll.CancelHits(1); Combat.CurrentCriticalHitCard = damageCard; if (Combat.CurrentCriticalHitCard.IsFaceup) { if (OnFaceupCritCardReadyToBeDealt != null) { OnFaceupCritCardReadyToBeDealt(this, Combat.CurrentCriticalHitCard); } if (OnFaceupCritCardReadyToBeDealtGlobal != null) { OnFaceupCritCardReadyToBeDealtGlobal(this, Combat.CurrentCriticalHitCard); } Triggers.RegisterTrigger(new Trigger { Name = "Information about faceup damage card", TriggerOwner = this.Owner.PlayerNo, TriggerType = TriggerTypes.OnFaceupCritCardReadyToBeDealtUI, EventHandler = InformCrit.LoadAndShow }); Triggers.ResolveTriggers(TriggerTypes.OnFaceupCritCardReadyToBeDealt, SufferFaceupDamageCard); } else { CallOnDamageCardIsDealt(Damage.DealDrawnCard); } }
private void TryToRepairCrit() { List <GenericDamageCard> shipCritsList = Selection.ThisShip.Damage.GetFaceupCrits(CriticalCardType.Ship); if (shipCritsList.Count == 1) { GenericDamageCard card = shipCritsList.First(); Selection.ThisShip.Damage.FlipFaceupCritFacedown(card); Triggers.FinishTrigger(); } else if (shipCritsList.Count > 1) { GorgolDecisionSubPhase subphase = Phases.StartTemporarySubPhaseNew <GorgolDecisionSubPhase>( HostShip.PilotInfo.PilotName + ": Select faceup ship Crit", Triggers.FinishTrigger ); subphase.DescriptionShort = HostShip.PilotInfo.PilotName; subphase.DescriptionLong = "Select a faceup ship Crit damage card to repair it"; subphase.ImageSource = HostShip; subphase.Start(); } else { Messages.ShowInfo(HostShip.PilotInfo.PilotName + ": To Ship faceup crits to repair"); Triggers.FinishTrigger(); } }
private void RegisterDealFaceupCrit(int shipId, Type critType) { GenericShip ship = Roster.AllShips.FirstOrDefault(n => n.Key == "ShipId:" + shipId).Value; if (ship != null) { GenericDamageCard critCard = (GenericDamageCard)System.Activator.CreateInstance(critType); DamageDecks.GetDamageDeck(ship.Owner.PlayerNo).PutOnTop(critCard); Triggers.RegisterTrigger(new Trigger() { Name = "Console: dead faceup crit card", TriggerType = TriggerTypes.OnAbilityDirect, TriggerOwner = ship.Owner.PlayerNo, EventHandler = delegate { ship.SufferHullDamage( true, new DamageSourceEventArgs { Source = "Console", DamageType = DamageTypes.Console } ); }, }); Triggers.ResolveTriggers(TriggerTypes.OnAbilityDirect, ShowMessage); } else { ShowHelp(); } }
private void CancelPilotCrits(GenericShip ship, GenericDamageCard crit, EventArgs e) { if (crit.Type == CriticalCardType.Pilot) { Messages.ShowInfo("Determination: Crit with \"Pilot\" trait is discarded"); crit = null; } }
protected void SelectDamageCard(GenericDamageCard damageCard) { DecisionSubPhase.ConfirmDecisionNoCallback(); Messages.ShowInfo(damageCard.Name + " has been selected"); damageCard.Expose(Triggers.FinishTrigger); }
private void CancelPilotCrits(GenericShip ship, GenericDamageCard crit, EventArgs e) { if (crit.Type == CriticalCardType.Pilot) { Messages.ShowInfo("Determination causes " + ship.PilotInfo.PilotName + " to discard " + crit.Name + " since it has the \"Pilot\" trait"); crit = null; } }
public void Initilize(GenericDamageCard critCard) { CritCard = critCard; string cancelType = (critCard.CancelDiceResults.Count == 0) ? "Discard" : "Try to discard"; Name = critCard.Name + ": " + cancelType; ImageUrl = critCard.ImageUrl; }
protected void SelectDamageCard(GenericDamageCard damageCard) { Messages.ShowInfo(damageCard.Name + " has been selected"); DamageDeck ownDeck = DamageDecks.GetDamageDeck(HostShip.Owner.PlayerNo); ownDeck.RemoveFromDamageDeck(damageCard); ownDeck.ReShuffleDeck(); Combat.CurrentCriticalHitCard = damageCard; HostShip.Damage.DealDrawnCard(DecisionSubPhase.ConfirmDecision); }
private void CreateDeck() { Deck = new List <GenericDamageCard>(); foreach (var cardInfo in RuleSet.Instance.DamageDeckContent) { for (int i = 0; i < cardInfo.Value; i++) { GenericDamageCard card = (GenericDamageCard)Activator.CreateInstance(cardInfo.Key); Deck.Add(card); } } }
protected void CheckBobaFettAbility(GenericShip target, GenericDamageCard crit, EventArgs e) { // Check that the ship getting the crit is the defender of an attack, and Boba Fett's ship is the attacker, and the defender has any card to discard. if (Combat.Defender != null && target.ShipId == Combat.Defender.ShipId && Combat.Attacker != null && HostShip.ShipId == Combat.Attacker.ShipId && Combat.Defender.UpgradeBar.GetUpgradesOnlyFaceup().Count > 0) { RegisterAbilityTrigger(TriggerTypes.OnFaceupCritCardReadyToBeDealt, (s1, e1) => { var phase = Phases.StartTemporarySubPhaseNew <BobaFettCrewDecisionSubPhase>("Boba Fett's ability", Triggers.FinishTrigger); phase.bobaFettUpgradeCard = HostUpgrade; phase.Start(); }); } }
public void DrawDamageCard(bool isFaceup, Action <GenericDamageCard, EventArgs> doWithDamageCard, EventArgs e) { if (Deck.Count == 0) { ReCreateDeck(); } GenericDamageCard drawedCard = Deck[0]; Deck.Remove(drawedCard); drawedCard.IsFaceup = isFaceup; doWithDamageCard(drawedCard, e); }
protected void SelectDamageCard(GenericDamageCard damageCard) { Messages.ShowInfo(damageCard.Name + " has been selected"); AssignedDamageCard = damageCard; AssignedDamageCard.IsFaceup = true; DamageDeck opponentDamageDeck = DamageDecks.GetDamageDeck(Combat.Attacker.Owner.PlayerNo); opponentDamageDeck.RemoveFromDamageDeck(damageCard); opponentDamageDeck.ReShuffleDeck(); AssignConditions(Combat.Attacker); DecisionSubPhase.ConfirmDecision(); }
public void ShuffleDeck(int seed) { Random random = new Random(seed); int n = Deck.Count; for (int i = 0; i < n; i++) { int r = i + random.Next(n - i); GenericDamageCard t = Deck[r]; Deck[r] = Deck[i]; Deck[i] = t; } }
private void ExposeFacedownCardByIndex(int index, Action callback, bool isOverriden = false) { if (!isOverriden) { List <GenericDamageCard> faceDownCards = GetFacedownCards(); GenericDamageCard randomCard = faceDownCards[index]; randomCard.Expose(callback); } else { callback(); } }
private void SelectDamageCard(GenericDamageCard damageCard) { Messages.ShowInfo("Card selected: " + damageCard.Name); AssignedDamageCard = damageCard; AssignedDamageCard.IsFaceup = true; DamageDeck opponentDamageDeck = DamageDecks.GetDamageDeck(TargetShip.Owner.PlayerNo); opponentDamageDeck.RemoveFromDamageDeck(damageCard); opponentDamageDeck.ReShuffleDeck(); AssignConditions(TargetShip); DecisionSubPhase.ConfirmDecision(); }
private void SelectDamageCard(GenericDamageCard damageCard) { DecisionSubPhase.ConfirmDecisionNoCallback(); Messages.ShowInfo("Kylo Ren selected " + damageCard.Name); AssignedDamageCard = damageCard; AssignedDamageCard.IsFaceup = true; DamageDeck opponentDamageDeck = DamageDecks.GetDamageDeck(TargetShip.Owner.PlayerNo); opponentDamageDeck.RemoveFromDamageDeck(damageCard); opponentDamageDeck.ReShuffleDeck(); AssignConditions(TargetShip); SpendExtra(Triggers.FinishTrigger); }
private void SufferAssignedCardInstead(object sender, EventArgs e, ref bool isSkipSufferDamage) { if ((e as DamageSourceEventArgs).DamageType == DamageTypes.ShipAttack) { isSkipSufferDamage = true; GenericShip ship = ShipWithCondition; Messages.ShowInfo("Kylo Ren's vison of the Dark Side came true: " + ship.PilotInfo.PilotName + " suffers " + AssignedDamageCard.Name); Combat.CurrentCriticalHitCard = AssignedDamageCard; AssignedDamageCard = null; RemoveConditions(ship); ship.ProcessDrawnDamageCard(e, Triggers.FinishTrigger); } }
public void DrawDamageCard(bool isFaceup, Action <EventArgs> doWithDamageCard, EventArgs e) { if (Deck.Count == 0) { ReCreateDeck(); } GenericDamageCard drawedCard = Deck[0]; Deck.Remove(drawedCard); drawedCard.IsFaceup = isFaceup; Combat.CurrentCriticalHitCard = drawedCard; doWithDamageCard(e); }
protected void SufferAssignedCardInstead(object sender, EventArgs e, ref bool isSkipSufferDamage) { if ((e as DamageSourceEventArgs).DamageType == DamageTypes.ShipAttack) { isSkipSufferDamage = true; GenericShip ship = ShipWithCondition; Messages.ShowInfo("Kylo Ren's premonition comes true: " + ship.PilotInfo.PilotName + " receives " + AssignedDamageCard.Name); Combat.CurrentCriticalHitCard = AssignedDamageCard; AssignedDamageCard = null; RemoveConditions(ship); ship.ProcessDrawnDamageCard(e); } }
private void SufferAssignedCardInstead(object sender, EventArgs e, ref bool isSkipSufferDamage) { if ((e as DamageSourceEventArgs).DamageType == DamageTypes.ShipAttack) { Messages.ShowInfo("Kylo Ren: Assigned card is dealt instead"); isSkipSufferDamage = true; GenericShip ship = ShipWithCondition; GenericDamageCard card = AssignedDamageCard; AssignedDamageCard = null; RemoveConditions(ship); ship.ProcessDrawnDamageCard(card, e); } }
public void ExposeRandomFacedownCard(Action callback) { List <GenericDamageCard> faceDownCards = GetFacedownCards(); if (faceDownCards.Count > 0) { int randomIndex = UnityEngine.Random.Range(0, faceDownCards.Count); GenericDamageCard randomCard = faceDownCards[randomIndex]; Host.CallSelectDamageCardToExpose(randomIndex, ExposeFacedownCardByIndex, callback); } else { Messages.ShowInfo("No cards to expose"); callback(); } }
private void MaarekStelePilotAbility(GenericShip ship, GenericDamageCard crit, EventArgs e) { if ((e as DamageSourceEventArgs) == null) { return; } GenericShip damageSourceShip = (e as DamageSourceEventArgs).Source as GenericShip; if (damageSourceShip == null) { return; } if (damageSourceShip.ShipId == HostShip.ShipId) { if ((e as DamageSourceEventArgs).DamageType == DamageTypes.ShipAttack) { RegisterAbilityTrigger(TriggerTypes.OnFaceupCritCardReadyToBeDealt, ShowDecision); } } }
private void HandleDamageCard(GenericDamageCard card) { card.Expose(DecisionSubPhase.ConfirmDecision); }
private void RemoveConditionsOnDestroyed(GenericShip ship) { AssignedDamageCard = null; RemoveConditions(ship); }
private void DiscardCrit(GenericDamageCard critCard) { Selection.ActiveShip.Damage.FlipFaceupCritFacedown(critCard); CritDiscarded(ConfirmDecision); }
private void DiscardCrit(GenericDamageCard critCard) { Selection.ActiveShip.Damage.FlipFaceupCritFacedown(critCard); Sounds.PlayShipSound("R2D2-Proud"); ConfirmDecision(); }