예제 #1
0
 public int CompareWith(PCardType CardType)
 {
     return(Id - CardType.Id);
 }
예제 #2
0
 public PCard GetEquipment(PCardType EquipType)
 {
     return(Area.EquipmentCardArea.CardList.Find((PCard Card) => Card.Type.Equals(EquipType)));
 }
예제 #3
0
 protected PEquipmentCardModel(string _Name, PCardType CardType) : base(_Name)
 {
     Type = CardType;
     foreach (PTime Time in new PTime[] {
         PPeriod.FirstFreeTime.During,
         PPeriod.SecondFreeTime.During
     })
     {
         MoveInHandTriggerList.Add((PPlayer Player, PCard Card) => {
             return(new PTrigger("挂上装备")
             {
                 IsLocked = false,
                 Player = Player,
                 Time = Time,
                 AIPriority = 180,
                 Condition = (PGame Game) => {
                     return Player.Equals(Game.NowPlayer) && (Player.IsAI || Game.Logic.WaitingForEndFreeTime());
                 },
                 AICondition = (PGame Game) => {
                     KeyValuePair <PCard, int> MaxCard = PMath.Max(Player.Area.HandCardArea.CardList, (PCard _Card) => _Card.Model.AIInEquipExpectation(Game, Player));
                     KeyValuePair <PCard, int> MinCard = PMath.Min(Player.Area.HandCardArea.CardList.FindAll((PCard _Card) => _Card.Type.IsEquipment()),
                                                                   (PCard _Card) => _Card.Model.AIInEquipExpectation(Game, Player));
                     PCard CurrentCard = Player.GetEquipment(CardType);
                     if (Player.General is P_HuaXiong)
                     {
                         return CurrentCard == null && Card.Equals(MinCard.Key);
                     }
                     if (Player.General is P_TangYin)
                     {
                         return CurrentCard == null;
                     }
                     if (Player.General is P_LvMeng)
                     {
                         return CurrentCard == null;
                     }
                     if (Player.General is P_Gryu && CurrentCard != null && CurrentCard.Point % 2 == 0)
                     {
                         return false;
                     }
                     int HuaMulanCof = Player.General is P_HuaMulan ? 3500 : 0;
                     return Card.Equals(MaxCard.Key) && (CurrentCard == null || MaxCard.Value + HuaMulanCof > CurrentCard.Model.AIInEquipExpectation(Game, Player)) && MaxCard.Value > 0;
                 },
                 Effect = (PGame Game) => {
                     List <PPlayer> Targets = new List <PPlayer> {
                         Player
                     };
                     Game.Monitor.CallTime(PTime.Card.AfterEmitTargetTime, new PUseCardTag(Card, Player, Targets));
                     Game.Monitor.CallTime(PTime.Card.AfterBecomeTargetTime, new PUseCardTag(Card, Player, Targets));
                     if (Targets.Count > 0)
                     {
                         Game.CardManager.MoveCard(Card, Player.Area.HandCardArea, Targets[0].Area.EquipmentCardArea);
                     }
                     else
                     {
                         Game.CardManager.MoveCard(Card, Player.Area.HandCardArea, Game.CardManager.ThrownCardHeap);
                     }
                     Game.Monitor.CallTime(PTime.Card.EndSettleTime, new PUseCardTag(Card, Player, Targets));
                 }
             });
         });
     }
 }