public int CompareWith(PCardType CardType) { return(Id - CardType.Id); }
public PCard GetEquipment(PCardType EquipType) { return(Area.EquipmentCardArea.CardList.Find((PCard Card) => Card.Type.Equals(EquipType))); }
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)); } }); }); } }