void GetTheirCards(Player Owner, GameEvent gameEvent, GameEventArgs eventArgs) { ISkill skill; List <Card> cards; List <Player> players; if (Game.CurrentGame.UiProxies[Owner].AskForCardUsage(new CardUsagePrompt("TuXi"), new TuXiVerifier(), out skill, out cards, out players)) { Game.CurrentGame.SortByOrderOfComputation(Game.CurrentGame.CurrentPlayer, players); NotifySkillUse(players); StagingDeckType TuXiDeck = new StagingDeckType("TuXi"); CardsMovement move = new CardsMovement(); move.Helper.IsFakedMove = true; foreach (Player p in players) { if (p.HandCards().Count == 0) { continue; } List <List <Card> > answer; if (!Game.CurrentGame.UiProxies[Owner].AskForCardChoice(new CardChoicePrompt("TuXi"), new List <DeckPlace>() { new DeckPlace(p, DeckType.Hand) }, new List <string>() { "TuXi" }, new List <int>() { 1 }, new RequireOneCardChoiceVerifier(true), out answer)) { answer = new List <List <Card> >(); answer.Add(Game.CurrentGame.PickDefaultCardsFrom(new List <DeckPlace>() { new DeckPlace(p, DeckType.Hand) })); } move.Cards = answer[0]; move.To = new DeckPlace(p, TuXiDeck); Game.CurrentGame.MoveCards(move, false, Core.Utils.GameDelays.None); Game.CurrentGame.PlayerLostCard(p, answer[0]); } move.Cards.Clear(); move.Helper.IsFakedMove = false; move.To = new DeckPlace(Owner, DeckType.Hand); foreach (Player p in players) { move.Cards.AddRange(Game.CurrentGame.Decks[p, TuXiDeck]); } cards = new List <Card>(move.Cards); Game.CurrentGame.MoveCards(move); Game.CurrentGame.PlayerAcquiredCard(Owner, cards); Game.CurrentGame.CurrentPhaseEventIndex++; Game.CurrentGame.NotificationProxy.NotifyActionComplete(); throw new TriggerResultException(TriggerResult.End); } }
public override bool Commit(GameEventArgs arg) { Owner[DiMengUsed] = 1; List <Card> cards = arg.Cards; if (cards.Count > 0) { Game.CurrentGame.HandleCardDiscard(Owner, cards); } Player src1 = arg.Targets[0]; Player src2 = arg.Targets[1]; StagingDeckType DiMengDeck = new StagingDeckType("DiMeng"); Game.CurrentGame.EnterAtomicContext(); CardsMovement move = new CardsMovement(); move.Helper.IsFakedMove = true; cards = new List <Card>(Game.CurrentGame.Decks[src1, DeckType.Hand]); move.Cards = new List <Card>(cards); move.To = new DeckPlace(src1, DiMengDeck); Game.CurrentGame.MoveCards(move); Game.CurrentGame.PlayerLostCard(src1, cards); cards = new List <Card>(Game.CurrentGame.Decks[src2, DeckType.Hand]); move.Cards = new List <Card>(cards); move.To = new DeckPlace(src2, DiMengDeck); Game.CurrentGame.MoveCards(move); Game.CurrentGame.PlayerLostCard(src2, cards); Game.CurrentGame.ExitAtomicContext(); move.Helper.IsFakedMove = false; Game.CurrentGame.SyncImmutableCards(src1, Game.CurrentGame.Decks[src2, DiMengDeck]); Game.CurrentGame.SyncImmutableCards(src2, Game.CurrentGame.Decks[src1, DiMengDeck]); Game.CurrentGame.EnterAtomicContext(); cards = new List <Card>(Game.CurrentGame.Decks[src2, DiMengDeck]); move.Cards = new List <Card>(cards); move.To = new DeckPlace(src1, DeckType.Hand); Game.CurrentGame.MoveCards(move); Game.CurrentGame.PlayerAcquiredCard(src1, cards); cards = new List <Card>(Game.CurrentGame.Decks[src1, DiMengDeck]); move.Cards = new List <Card>(cards); move.To = new DeckPlace(src2, DeckType.Hand); Game.CurrentGame.MoveCards(move); Game.CurrentGame.PlayerAcquiredCard(src2, cards); Game.CurrentGame.ExitAtomicContext(); return(true); }
protected void Draw(Player player, GameEvent gameEvent, GameEventArgs eventArgs, List <Card> cards, List <Player> players) { Game.CurrentGame.SortByOrderOfComputation(Game.CurrentGame.CurrentPlayer, players); StagingDeckType QiaoBianDeck = new StagingDeckType("QiaoBian"); CardsMovement move = new CardsMovement(); move.Helper.IsFakedMove = true; foreach (Player p in players) { if (p.HandCards().Count == 0) { continue; } List <List <Card> > answer; var places = new List <DeckPlace>() { new DeckPlace(p, DeckType.Hand) }; if (!Game.CurrentGame.UiProxies[Owner].AskForCardChoice(new CardChoicePrompt("QiaoBian", Owner), places, new List <string>() { "QiaoBian" }, new List <int>() { 1 }, new RequireOneCardChoiceVerifier(true), out answer)) { answer = new List <List <Card> >(); answer.Add(Game.CurrentGame.PickDefaultCardsFrom(places)); } move.Cards = answer[0]; move.To = new DeckPlace(p, QiaoBianDeck); Game.CurrentGame.MoveCards(move, false, Core.Utils.GameDelays.None); Game.CurrentGame.PlayerLostCard(p, answer[0]); } move.Cards.Clear(); move.Helper.IsFakedMove = false; move.To = new DeckPlace(Owner, DeckType.Hand); foreach (Player p in players) { move.Cards.AddRange(Game.CurrentGame.Decks[p, QiaoBianDeck]); } cards = new List <Card>(move.Cards); Game.CurrentGame.MoveCards(move); Game.CurrentGame.PlayerAcquiredCard(Owner, cards); Game.CurrentGame.NotificationProxy.NotifyActionComplete(); }
public override bool Commit(GameEventArgs arg) { Owner[GanLuUsed] = 1; List <Card> cards; Player src1 = arg.Targets[0]; Player src2 = arg.Targets[1]; StagingDeckType GanLuDeck = new StagingDeckType("GanLu"); Game.CurrentGame.EnterAtomicContext(); CardsMovement move = new CardsMovement(); move.Helper.IsFakedMove = true; cards = new List <Card>(src1.Equipments()); move.Cards = new List <Card>(cards); move.To = new DeckPlace(src1, GanLuDeck); Game.CurrentGame.MoveCards(move); Game.CurrentGame.PlayerLostCard(src1, cards); cards = new List <Card>(src2.Equipments()); move.Cards = new List <Card>(cards); move.To = new DeckPlace(src2, GanLuDeck); Game.CurrentGame.MoveCards(move); Game.CurrentGame.PlayerLostCard(src2, cards); Game.CurrentGame.ExitAtomicContext(); Game.CurrentGame.EnterAtomicContext(); move.Helper.IsFakedMove = false; cards = new List <Card>(Game.CurrentGame.Decks[src2, GanLuDeck]); move.Cards = new List <Card>(cards); move.To = new DeckPlace(src1, DeckType.Equipment); Game.CurrentGame.MoveCards(move); Game.CurrentGame.PlayerAcquiredCard(src1, cards); cards = new List <Card>(Game.CurrentGame.Decks[src1, GanLuDeck]); move.Cards = new List <Card>(cards); move.To = new DeckPlace(src2, DeckType.Equipment); Game.CurrentGame.MoveCards(move); Game.CurrentGame.PlayerAcquiredCard(src2, cards); Game.CurrentGame.ExitAtomicContext(); return(true); }