Example #1
0
 public P_TsouWeiShangChi() : base(CardName)
 {
     Point = 6;
     Index = 36;
     foreach (PTime Time in new PTime[] {
         PTime.EnterDyingTime
     })
     {
         MoveInHandTriggerList.Add((PPlayer Player, PCard Card) => {
             return(new PTrigger(CardName)
             {
                 IsLocked = false,
                 Player = Player,
                 Time = Time,
                 AIPriority = 20,
                 Condition = (PGame Game) => {
                     return Time.Equals(PTime.EnterDyingTime) && Game.TagManager.FindPeekTag <PDyingTag>(PDyingTag.TagName).Player.Equals(Player);
                 },
                 Effect = MakeNormalEffect(Player, Card, AIEmitTargets, AIEmitTargets,
                                           (PGame Game, PPlayer User, PPlayer Target) => {
                     Game.GetMoney(Target, 5000);
                     Target.Tags.CreateTag(PTag.OutOfGameTag);
                 })
             });
         });
     }
 }
Example #2
0
 public P_ChiaChiihPuTien() : base(CardName)
 {
     Point = 5;
     Index = 27;
     foreach (PTime Time in new PTime[] {
         PPeriod.FirstFreeTime.During,
         PPeriod.SecondFreeTime.During
     })
     {
         MoveInHandTriggerList.Add((PPlayer Player, PCard Card) => {
             return(new PTrigger(CardName)
             {
                 IsLocked = false,
                 Player = Player,
                 Time = Time,
                 AIPriority = 10,
                 Condition = (PGame Game) => {
                     int MinMoney = PMath.Min(Game.PlayerList.FindAll((PPlayer _Player) => _Player.IsAlive), (PPlayer _Player) => _Player.Money).Value;
                     return Player.Equals(Game.NowPlayer) && (Player.IsAI || Game.Logic.WaitingForEndFreeTime()) && Player.Money == MinMoney;
                 },
                 AICondition = (PGame Game) => {
                     return PAiMapAnalyzer.OutOfGameExpect(Game, Player, true) > 0 && Game.NowPeriod.Equals(PPeriod.FirstFreeTime.During);
                 },
                 Effect = MakeNormalEffect(Player, Card, AIEmitTargets, AIEmitTargets,
                                           (PGame Game, PPlayer User, PPlayer Target) => {
                     Target.Tags.CreateTag(PTag.OutOfGameTag);
                 })
             });
         });
     }
 }
Example #3
0
 public P_TiaoHuLiShan() : base(CardName)
 {
     Point = 3;
     Index = 15;
     foreach (PTime Time in new PTime[] {
         PPeriod.FirstFreeTime.During,
         PPeriod.SecondFreeTime.During
     })
     {
         MoveInHandTriggerList.Add((PPlayer Player, PCard Card) => {
             return(new PTrigger(CardName)
             {
                 IsLocked = false,
                 Player = Player,
                 Time = Time,
                 AIPriority = 170,
                 Condition = (PGame Game) => {
                     return Player.Equals(Game.NowPlayer) && (Player.IsAI || Game.Logic.WaitingForEndFreeTime());
                 },
                 AICondition = (PGame Game) => {
                     return AIEmitTargets(Game, Player)[0] != null;
                 },
                 Effect = MakeNormalEffect(Player, Card, AIEmitTargets,
                                           PTrigger.Except(Player),
                                           (PGame Game, PPlayer User, PPlayer Target) => {
                     Target.Tags.CreateTag(PTag.OutOfGameTag);
                 })
             });
         });
     }
 }
Example #4
0
 public P_ManTiienKuoHai() : base(CardName)
 {
     Point = 1;
     Index = 1;
     foreach (PTime Time in new PTime[] {
         PPeriod.FirstFreeTime.During,
         PPeriod.SecondFreeTime.During
     })
     {
         MoveInHandTriggerList.Add((PPlayer Player, PCard Card) => {
             return(new PTrigger(CardName)
             {
                 IsLocked = false,
                 Player = Player,
                 Time = Time,
                 AIPriority = 170,
                 Condition = PTrigger.Initiative(Player),
                 AICondition = (PGame Game) => {
                     if (Player.General is P_WuZhao && Player.RemainLimit(PSkillInfo.女权.Name))
                     {
                         return false;
                     }
                     return AIEmitTargets(Game, Player)[0] != null && !Player.OutOfGame && P_PanYue.XianJuTest(Game, Player);
                 },
                 Effect = MakeNormalEffect(Player, Card, AIEmitTargets,
                                           PTrigger.Except(Player),
                                           (PGame Game, PPlayer User, PPlayer Target) => {
                     Game.Injure(User, Target, Game.Judge(User, 6) * 200, Card);
                 })
             });
         });
     }
 }
Example #5
0
 public P_ChiaTaoFaKuo() : base(CardName)
 {
     Point = 4;
     Index = 24;
     foreach (PTime Time in new PTime[] {
         PPeriod.EndTurnStage.During
     })
     {
         MoveInHandTriggerList.Add((PPlayer Player, PCard Card) => {
             return(new PTrigger(CardName)
             {
                 IsLocked = false,
                 Player = Player,
                 Time = Time,
                 AIPriority = 100,
                 Condition = (PGame Game) => {
                     PChiaTaoFaKuoTag ChiaTaoFaKuoTag = Game.TagManager.FindPeekTag <PChiaTaoFaKuoTag>(PChiaTaoFaKuoTag.TagName);
                     return Player.Equals(Game.NowPlayer) && ChiaTaoFaKuoTag.LordList.Count >= 2;
                 },
                 AICondition = (PGame Game) => {
                     return AIEmitTargets(Game, Player)[0] != null && !Player.OutOfGame && P_PanYue.XianJuTest(Game, Player);
                 },
                 Effect = MakeNormalEffect(Player, Card, AIEmitTargets, (PGame _Game, PPlayer _Player) => {
                     PChiaTaoFaKuoTag ChiaTaoFaKuoTag = _Game.TagManager.FindPeekTag <PChiaTaoFaKuoTag>(PChiaTaoFaKuoTag.TagName);
                     return ChiaTaoFaKuoTag.LordList.Contains(_Player);
                 },
                                           (PGame Game, PPlayer User, PPlayer Target) => {
                     Game.Injure(User, Target, 1000, Card);
                 })
             });
         });
     }
 }
Example #6
0
    public P_FanKeevWeiChu() : base(CardName)
    {
        Point = 5;
        Index = 30;
        foreach (PTime Time in new PTime[] {
            PTime.Injure.AfterAcceptInjure
        })
        {
            MoveInHandTriggerList.Add((PPlayer Player, PCard Card) => {
                return(new PTrigger(CardName)
                {
                    IsLocked = false,
                    Player = Player,
                    Time = Time,
                    AIPriority = 100,
                    Condition = (PGame Game) => {
                        PInjureTag InjureTag = Game.TagManager.FindPeekTag <PInjureTag>(PInjureTag.TagName);
                        if (!(InjureTag.InjureSource is PBlock))
                        {
                            return false;
                        }
                        else
                        {
                            PBlock Block = (PBlock)InjureTag.InjureSource;
                            return Player.Equals(InjureTag.ToPlayer) && InjureTag.Injure > 0 && InjureTag.InjureSource != null && !Player.Equals(Block.Lord) && Block.HouseNumber == 1;
                        }
                    },
                    AICondition = (PGame Game) => {
                        PInjureTag InjureTag = Game.TagManager.FindPeekTag <PInjureTag>(PInjureTag.TagName);
                        PBlock Block = (PBlock)InjureTag.InjureSource;
                        return Player.TeamIndex != Block.Lord.TeamIndex;
                    },
                    Effect = (PGame Game) => {
                        List <PPlayer> Targets = new List <PPlayer>();
                        Game.Monitor.CallTime(PTime.Card.AfterEmitTargetTime, new PUseCardTag(Card, Player, Targets));
                        Game.CardManager.MoveCard(Card, Player.Area.HandCardArea, Game.CardManager.SettlingArea);
                        Game.Monitor.CallTime(PTime.Card.AfterBecomeTargetTime, new PUseCardTag(Card, Player, Targets));
                        PInjureTag InjureTag = Game.TagManager.FindPeekTag <PInjureTag>(PInjureTag.TagName);
                        PBlock Block = (PBlock)InjureTag.InjureSource;

                        Block.Lord = Player;
                        PNetworkManager.NetworkServer.TellClients(new PHighlightBlockOrder(Block.Index.ToString()));
                        PNetworkManager.NetworkServer.TellClients(new PRefreshBlockBasicOrder(Block));

                        #region 成就:我的地盘我做主
                        if (Block.BusinessType.Equals(PBusinessType.Castle))
                        {
                            PArch.Announce(Game, Player, "我的地盘我做主");
                        }
                        #endregion

                        Game.CardManager.MoveCard(Card, Game.CardManager.SettlingArea, Game.CardManager.ThrownCardHeap);
                        Game.Monitor.CallTime(PTime.Card.EndSettleTime, new PUseCardTag(Card, Player, Targets));
                    }
                });
            });
        }
    }
Example #7
0
 public P_YooChiinKuTsung() : base(CardName)
 {
     Point = 3;
     Index = 16;
     foreach (PTime Time in new PTime[] {
         PTime.Injure.EmitInjure
     })
     {
         MoveInHandTriggerList.Add((PPlayer Player, PCard Card) => {
             return(new PTrigger(CardName)
             {
                 IsLocked = false,
                 Player = Player,
                 Time = Time,
                 AIPriority = 10,
                 Condition = (PGame Game) => {
                     PInjureTag InjureTag = Game.TagManager.FindPeekTag <PInjureTag>(PInjureTag.TagName);
                     return Player.Equals(InjureTag.FromPlayer) && InjureTag.Injure > 0 && InjureTag.ToPlayer != null && InjureTag.ToPlayer.Area.HandCardArea.CardNumber > 0;
                 },
                 AICondition = (PGame Game) => {
                     PInjureTag InjureTag = Game.TagManager.FindPeekTag <PInjureTag>(PInjureTag.TagName);
                     if (Player.TeamIndex == InjureTag.ToPlayer.TeamIndex)
                     {
                         if (Player.General is P_IzayoiMiku && InjureTag.ToPlayer.General is P_Gabriel)
                         {
                             return false;
                         }
                         return InjureTag.Injure >= InjureTag.ToPlayer.Money || (InjureTag.Injure >= 6000 && InjureTag.Injure + Player.Money >= 2 * (InjureTag.ToPlayer.Money - InjureTag.Injure));
                     }
                     else
                     {
                         return InjureTag.Injure < InjureTag.ToPlayer.Money && InjureTag.Injure <= 1000 && InjureTag.ToPlayer.Area.HandCardArea.CardNumber >= 2 && PAiCardExpectation.FindMostValuableToGet(Game, Player, InjureTag.ToPlayer).Value > 3000;
                     }
                 },
                 Effect = MakeNormalEffect(Player, Card, AIEmitTargets, AIEmitTargets,
                                           (PGame Game, PPlayer User, PPlayer Target) => {
                     PInjureTag InjureTag = Game.TagManager.FindPeekTag <PInjureTag>(PInjureTag.TagName);
                     PNetworkManager.NetworkServer.TellClients(new PPushTextOrder(User.Index.ToString(), "欲擒故纵:防止伤害", PPushType.Information.Name));
                     InjureTag.Injure = 0;
                     for (int i = 0; i < 2; ++i)
                     {
                         if (Target.Area.HandCardArea.CardNumber > 0)
                         {
                             PCard Got = Game.GetCardFrom(User, Target, true, false);
                             #region 成就:七擒七纵
                             if (Got.Model is P_NanManHsiang && User.Area.HandCardArea.CardList.Contains(Got))
                             {
                                 PArch.Announce(Game, User, "七擒七纵");
                             }
                             #endregion
                         }
                     }
                 })
             });
         });
     }
 }
Example #8
0
 public P_HsiaoLiTsaangTao() : base(CardName)
 {
     Point = 2;
     Index = 10;
     foreach (PTime Time in new PTime[] {
         PPeriod.FirstFreeTime.During,
         PPeriod.SecondFreeTime.During
     })
     {
         MoveInHandTriggerList.Add((PPlayer Player, PCard Card) => {
             return(new PTrigger(CardName)
             {
                 IsLocked = false,
                 Player = Player,
                 Time = Time,
                 AIPriority = 145,
                 Condition = (PGame Game) => {
                     return Player.Equals(Game.NowPlayer) && (Player.IsAI || Game.Logic.WaitingForEndFreeTime()) && Player.Area.HandCardArea.CardList.Exists((PCard _Card) => _Card.Type.IsEquipment());
                 },
                 AICondition = (PGame Game) => {
                     if (Player.General is P_WuZhao && Player.RemainLimit(PSkillInfo.女权.Name))
                     {
                         return false;
                     }
                     return AIEmitTargets(Game, Player)[0] != null && P_PanYue.XianJuTest(Game, Player);
                 },
                 Effect = MakeNormalEffect(Player, Card, AIEmitTargets, PTrigger.Except(Player),
                                           (PGame Game, PPlayer User, PPlayer Target) => {
                     PCard TargetCard = null;
                     if (User.IsAI)
                     {
                         if (User.TeamIndex == Target.TeamIndex)
                         {
                             TargetCard = TeammateValueCard(Game, User, Target).Key;
                         }
                         else
                         {
                             TargetCard = EnemyValueCard(Game, User, Target).Key;
                         }
                     }
                     else
                     {
                         do
                         {
                             TargetCard = PNetworkManager.NetworkServer.ChooseManager.AskToChooseOwnCard(User, CardName + "[选择一张手牌中的装备牌]", true, false);
                         } while (!TargetCard.Type.IsEquipment());
                     }
                     if (TargetCard != null)
                     {
                         Game.CardManager.MoveCard(TargetCard, User.Area.HandCardArea, Target.Area.EquipmentCardArea);
                         Game.Injure(User, Target, 500 * Target.Area.EquipmentCardArea.CardNumber, Card);
                     }
                 })
             });
         });
     }
 }
Example #9
0
 public P_KevAnKuanHuo() : base(CardName)
 {
     Point = 2;
     Index = 9;
     foreach (PTime Time in new PTime[] {
         PTime.Card.AfterBecomeTargetTime
     })
     {
         MoveInHandTriggerList.Add((PPlayer Player, PCard Card) => {
             return(new PTrigger(CardName)
             {
                 IsLocked = false,
                 Player = Player,
                 Time = Time,
                 AIPriority = 100,
                 Condition = (PGame Game) => {
                     PUseCardTag UseCardTag = Game.TagManager.FindPeekTag <PUseCardTag>(PUseCardTag.TagName);
                     return UseCardTag.TargetList.Count >= 2 && UseCardTag.TargetList.Contains(Player) && UseCardTag.Card.Type.Equals(PCardType.SchemeCard);
                 },
                 Effect = (PGame Game) => {
                     List <PPlayer> Targets = new List <PPlayer>();
                     Game.Monitor.CallTime(PTime.Card.AfterEmitTargetTime, new PUseCardTag(Card, Player, Targets));
                     Game.CardManager.MoveCard(Card, Player.Area.HandCardArea, Game.CardManager.SettlingArea);
                     Game.Monitor.CallTime(PTime.Card.AfterBecomeTargetTime, new PUseCardTag(Card, Player, Targets));
                     PUseCardTag UseCardTag = Game.TagManager.FindPeekTag <PUseCardTag>(PUseCardTag.TagName);
                     #region 成就:不辞劳苦
                     if (UseCardTag.Card.Model is P_IITaiLao)
                     {
                         PArch.Announce(Game, Player, "不辞劳苦");
                     }
                     #endregion
                     UseCardTag.TargetList.Remove(Player);
                     PTrigger GetMoneyTrigger = null;
                     GetMoneyTrigger = new PTrigger(CardName + "[摸500]")
                     {
                         IsLocked = true,
                         Player = Player,
                         Time = PTime.Card.EndSettleTime,
                         Condition = (PGame _Game) => {
                             PUseCardTag _UseCardTag = _Game.TagManager.FindPeekTag <PUseCardTag>(PUseCardTag.TagName);
                             return _UseCardTag.Card.Equals(UseCardTag.Card);
                         },
                         Effect = (PGame _Game) => {
                             _Game.GetMoney(Player, 500);
                             Game.Monitor.RemoveTrigger(GetMoneyTrigger);
                         }
                     };
                     Game.Monitor.AddTrigger(GetMoneyTrigger);
                     Game.CardManager.MoveCard(Card, Game.CardManager.SettlingArea, Game.CardManager.ThrownCardHeap);
                     Game.Monitor.CallTime(PTime.Card.EndSettleTime, new PUseCardTag(Card, Player, Targets));
                 }
             });
         });
     }
 }
Example #10
0
 public P_ChiehShihHuanHun() : base(CardName)
 {
     Point = 3;
     Index = 14;
     foreach (PTime Time in new PTime[] {
         PPeriod.FirstFreeTime.During,
         PPeriod.SecondFreeTime.During,
         PTime.EnterDyingTime
     })
     {
         MoveInHandTriggerList.Add((PPlayer Player, PCard Card) => {
             return(new PTrigger(CardName)
             {
                 IsLocked = false,
                 Player = Player,
                 Time = Time,
                 AIPriority = Time.Equals(PTime.EnterDyingTime) ? 10 : 90,
                 Condition = (PGame Game) => {
                     return Time.Equals(PTime.EnterDyingTime) ? Game.TagManager.FindPeekTag <PDyingTag>(PDyingTag.TagName).Player.Equals(Player) : Player.Equals(Game.NowPlayer) && (Player.IsAI || Game.Logic.WaitingForEndFreeTime());
                 },
                 AICondition = (PGame Game) => {
                     return Time.Equals(PTime.EnterDyingTime) || AIInHandExpectation(Game, Player) > 5000;
                 },
                 Effect = MakeNormalEffect(Player, Card, AIEmitTargets, AIEmitTargets,
                                           (PGame Game, PPlayer User, PPlayer Target) => {
                     PPlayer Another = null;
                     if (Target.IsAI)
                     {
                         Another = PMath.Max(Game.PlayerList.FindAll((PPlayer _Player) => !_Player.Equals(Player)), (PPlayer _Player) => {
                             return _Player.Money;
                         }).Key;
                     }
                     else
                     {
                         Another = PNetworkManager.NetworkServer.ChooseManager.AskForTargetPlayer(Target, PTrigger.Except(Target), CardName + "[与其金钱相同]");
                     }
                     Game.CardManager.ThrowAll(Target.Area);
                     if (Another != null)
                     {
                         if (Another.Money > Target.Money)
                         {
                             Game.GetMoney(Target, Math.Min(10000, Another.Money - Target.Money));
                         }
                         else if (Another.Money < Target.Money)
                         {
                             Game.LoseMoney(Target, Target.Money - Another.Money);
                         }
                     }
                 })
             });
         });
     }
 }
Example #11
0
 public P_ShangWuChoouTii() : base(CardName)
 {
     Point = 5;
     Index = 28;
     foreach (PTime Time in new PTime[] {
         PPeriod.FirstFreeTime.During,
         PPeriod.SecondFreeTime.During
     })
     {
         MoveInHandTriggerList.Add((PPlayer Player, PCard Card) => {
             return(new PTrigger(CardName)
             {
                 IsLocked = false,
                 Player = Player,
                 Time = Time,
                 AIPriority = 105,
                 Condition = (PGame Game) => {
                     return Player.Equals(Game.NowPlayer) && (Player.IsAI || Game.Logic.WaitingForEndFreeTime()) && Game.PlayerList.Exists((PPlayer _Player) => !_Player.Equals(Player) && _Player.Distance(Player) <= 3);
                 },
                 AICondition = (PGame Game) => {
                     return AIEmitTargets(Game, Player)[0] != null;
                 },
                 Effect = MakeNormalEffect(Player, Card, AIEmitTargets, (PGame Game, PPlayer _Player) => !_Player.Equals(Player) && _Player.Distance(Player) <= 3,
                                           (PGame Game, PPlayer User, PPlayer Target) => {
                     Target.Tags.CreateTag(PTag.NoLadderTag);
                     PTrigger StepZero = null;
                     StepZero = new PTrigger(CardName + "[步数变为0]")
                     {
                         IsLocked = true,
                         Player = null,
                         Time = PPeriod.WalkingStage.Start,
                         Condition = (PGame _Game) => {
                             return Target.Equals(_Game.NowPlayer);
                         },
                         Effect = (PGame _Game) => {
                             Target.Tags.PopTag <PTag>(PTag.NoLadderTag.Name);
                             PNetworkManager.NetworkServer.TellClients(new PPushTextOrder(Target.Index.ToString(), CardName + "效果触发", PPushType.Information.Name));
                             _Game.TagManager.FindPeekTag <PStepCountTag>(PStepCountTag.TagName).StepCount = 0;
                             _Game.Monitor.RemoveTrigger(StepZero);
                         }
                     };
                     Game.Monitor.AddTrigger(StepZero);
                     #region 成就:留客
                     if (User.Equals(Target.Position.Lord) && Target.Position.BusinessType.Equals(PBusinessType.ShoppingCenter))
                     {
                         PArch.Announce(Game, User, "留客");
                     }
                     #endregion
                 })
             });
         });
     }
 }
Example #12
0
 public P_WeiWeiChiuChao() : base(CardName)
 {
     Point = 1;
     Index = 2;
     foreach (PTime Time in new PTime[] {
         PTime.Injure.AcceptInjure
     })
     {
         MoveInHandTriggerList.Add((PPlayer Player, PCard Card) => {
             return(new PTrigger(CardName)
             {
                 IsLocked = false,
                 Player = Player,
                 Time = Time,
                 AIPriority = 100,
                 Condition = (PGame Game) => {
                     PInjureTag InjureTag = Game.TagManager.FindPeekTag <PInjureTag>(PInjureTag.TagName);
                     return Player.Equals(InjureTag.ToPlayer) && InjureTag.FromPlayer != null && InjureTag.Injure > 0;
                 },
                 AICondition = (PGame Game) => {
                     PInjureTag InjureTag = Game.TagManager.FindPeekTag <PInjureTag>(PInjureTag.TagName);
                     if (InjureTag.FromPlayer.General is P_LiuJi)
                     {
                         if (InjureTag.FromPlayer.TeamIndex == Player.TeamIndex)
                         {
                             return InjureTag.FromPlayer.Money <= 3600;
                         }
                         else
                         {
                             return false;
                         }
                     }
                     return Player.Money <= InjureTag.Injure || (InjureTag.Injure >= 3000 && InjureTag.FromPlayer.TeamIndex != Player.TeamIndex);
                 },
                 Effect = MakeNormalEffect(Player, Card, AIEmitTargets, AIEmitTargets,
                                           (PGame Game, PPlayer User, PPlayer Target) => {
                     if (Game.PkPoint(User, Target) == 1)
                     {
                         PNetworkManager.NetworkServer.TellClients(new PPushTextOrder(User.Index.ToString(), "围魏救赵:防止伤害", PPushType.Information.Name));
                         #region 成就:千钧一发
                         if (Game.TagManager.FindPeekTag <PInjureTag>(PInjureTag.TagName).Injure >= 10000)
                         {
                             PArch.Announce(Game, User, "千钧一发");
                         }
                         #endregion
                         Game.TagManager.FindPeekTag <PInjureTag>(PInjureTag.TagName).Injure = 0;
                     }
                 })
             });
         });
     }
 }
Example #13
0
 public P_FuTiChoouHsin() : base(CardName)
 {
     Point = 4;
     Index = 19;
     foreach (PTime Time in new PTime[] {
         PTime.Injure.AfterAcceptInjure
     })
     {
         MoveInHandTriggerList.Add((PPlayer Player, PCard Card) => {
             return(new PTrigger(CardName)
             {
                 IsLocked = false,
                 Player = Player,
                 Time = Time,
                 AIPriority = 60,
                 Condition = (PGame Game) => {
                     PInjureTag InjureTag = Game.TagManager.FindPeekTag <PInjureTag>(PInjureTag.TagName);
                     return Player.Equals(InjureTag.ToPlayer) && InjureTag.FromPlayer != null && InjureTag.Injure > 0 && InjureTag.InjureSource != null && (InjureTag.InjureSource is PBlock) && ((PBlock)InjureTag.InjureSource).HouseNumber > 0;
                 },
                 AICondition = (PGame Game) => {
                     PInjureTag InjureTag = Game.TagManager.FindPeekTag <PInjureTag>(PInjureTag.TagName);
                     PBlock Block = (PBlock)InjureTag.InjureSource;
                     return Block.Lord != null && Block.Lord.TeamIndex != Player.TeamIndex && (PAiMapAnalyzer.HouseValue(Game, Block.Lord, Block) >= 5400 || Player.Money <= 3000);
                 },
                 Effect = (PGame Game) => {
                     List <PPlayer> Targets = new List <PPlayer>();
                     Game.Monitor.CallTime(PTime.Card.AfterEmitTargetTime, new PUseCardTag(Card, Player, Targets));
                     Game.CardManager.MoveCard(Card, Player.Area.HandCardArea, Game.CardManager.SettlingArea);
                     Game.Monitor.CallTime(PTime.Card.AfterBecomeTargetTime, new PUseCardTag(Card, Player, Targets));
                     PInjureTag InjureTag = Game.TagManager.FindPeekTag <PInjureTag>(PInjureTag.TagName);
                     PBlock Block = (PBlock)InjureTag.InjureSource;
                     #region 成就:破釜沉舟
                     if (Block.HouseNumber >= 10)
                     {
                         PArch.Announce(Game, Player, "破釜沉舟");
                     }
                     #endregion
                     Game.LoseHouse(Block, Block.HouseNumber);
                     Game.CardManager.MoveCard(Card, Game.CardManager.SettlingArea, Game.CardManager.ThrownCardHeap);
                     Game.Monitor.CallTime(PTime.Card.EndSettleTime, new PUseCardTag(Card, Player, Targets));
                 }
             });
         });
     }
 }
Example #14
0
 public P_TaTsaaoChingShev() : base(CardName)
 {
     Point = 3;
     Index = 13;
     foreach (PTime Time in new PTime[] {
         PPeriod.FirstFreeTime.During,
         PPeriod.SecondFreeTime.During
     })
     {
         MoveInHandTriggerList.Add((PPlayer Player, PCard Card) => {
             return(new PTrigger(CardName)
             {
                 IsLocked = false,
                 Player = Player,
                 Time = Time,
                 AIPriority = 95,
                 Condition = (PGame Game) => {
                     return Player.Equals(Game.NowPlayer) && (Player.IsAI || Game.Logic.WaitingForEndFreeTime()) && AIEmitTargets(Game, Player).Count > 0;
                 },
                 AICondition = (PGame Game) => {
                     if (Player.General is P_WuZhao && Player.RemainLimit(PSkillInfo.女权.Name))
                     {
                         return false;
                     }
                     return AIInHandExpectation(Game, Player) > 900;
                 },
                 Effect = MakeNormalEffect(Player, Card, AIEmitTargets, AIEmitTargets,
                                           (PGame Game, PPlayer User, PPlayer Target) => {
                     Game.ThrowHouse(Target, Target, CardName);
                     Game.TagManager.PopTag <PTag>("竹篮打水");
                 },
                                           #region 成就:竹篮打水
                                           (PGame Game, PPlayer User, List <PPlayer> Target) => {
                     Game.TagManager.CreateTag(new PTag("竹篮打水"));
                 }, (PGame Game, PPlayer User, List <PPlayer> Target) => {
                     if (Game.TagManager.PopTag <PTag>("竹篮打水") != null)
                     {
                         PArch.Announce(Game, User, "竹篮打水");
                     }
                 })
                          #endregion
             });
         });
     }
 }
Example #15
0
 public P_AnTuCheevnTsaang() : base(CardName)
 {
     Point = 2;
     Index = 8;
     foreach (PTime Time in new PTime[] {
         PPeriod.FirstFreeTime.End
     })
     {
         MoveInHandTriggerList.Add((PPlayer Player, PCard Card) => {
             return(new PTrigger(CardName)
             {
                 IsLocked = false,
                 Player = Player,
                 Time = Time,
                 AIPriority = 120,
                 Condition = (PGame Game) => {
                     return Game.NowPlayer.Equals(Player);
                 },
                 AICondition = (PGame Game) => {
                     int Ideal = PMath.Max(Game.Map.BlockList, (PBlock Block) => PAiMapAnalyzer.StartFromExpect(Game, Player, Block)).Value;
                     int Current = PAiMapAnalyzer.StartFromExpect(Game, Player, Player.Position);
                     return (Ideal - Current >= 2000) || (-Current >= Player.Money && -Ideal < Player.Money);
                 },
                 Effect = MakeNormalEffect(Player, Card, AIEmitTargets, AIEmitTargets,
                                           (PGame Game, PPlayer User, PPlayer Target) => {
                     PBlock TargetBlock = Target.Position;
                     if (Target.IsAI)
                     {
                         TargetBlock = PMath.Max(Game.Map.BlockList, (PBlock Block) => PAiMapAnalyzer.StartFromExpect(Game, Player, Block)).Key;
                     }
                     else
                     {
                         TargetBlock = PNetworkManager.NetworkServer.ChooseManager.AskToChooseBlock(Target, "[暗度陈仓]选择目标格子");
                     }
                     if (TargetBlock != null)
                     {
                         PNetworkManager.NetworkServer.TellClients(new PHighlightBlockOrder(TargetBlock.Index.ToString()));
                         Game.MovePosition(Target, Target.Position, TargetBlock);
                     }
                 })
             });
         });
     }
 }
Example #16
0
 public P_HunShuiMoYoo() : base(CardName)
 {
     Point = 4;
     Index = 20;
     foreach (PTime Time in new PTime[] {
         PTime.Card.EndSettleTime
     })
     {
         MoveInHandTriggerList.Add((PPlayer Player, PCard Card) => {
             return(new PTrigger(CardName)
             {
                 IsLocked = false,
                 Player = Player,
                 Time = Time,
                 AIPriority = 100,
                 Condition = (PGame Game) => {
                     PUseCardTag UseCardTag = Game.TagManager.FindPeekTag <PUseCardTag>(PUseCardTag.TagName);
                     return UseCardTag.TargetList.Count >= 2;
                 },
                 AICondition = (PGame Game) => {
                     if (Player.General is P_WuZhao && Player.RemainLimit(PSkillInfo.女权.Name))
                     {
                         return false;
                     }
                     int Value = 0;
                     PUseCardTag UseCardTag = Game.TagManager.FindPeekTag <PUseCardTag>(PUseCardTag.TagName);
                     UseCardTag.TargetList.ForEach((PPlayer _Player) => {
                         if (_Player.CanBeInjured && !(_Player.Defensor != null && _Player.Defensor.Model is P_YooHsi))
                         {
                             Value += PAiTargetChooser.InjureExpect(Game, Player, Player, _Player, 500, Card);
                         }
                     });
                     return Value >= 1000 && !Player.OutOfGame && P_PanYue.XianJuTest(Game, Player);
                 },
                 Effect = MakeNormalEffect(Player, Card, AIEmitTargets, AIEmitTargets,
                                           (PGame Game, PPlayer User, PPlayer Target) => {
                     Game.Injure(User, Target, 500, Card);
                 })
             });
         });
     }
 }
Example #17
0
 public P_IITaiLao() : base(CardName)
 {
     Point = 1;
     Index = 4;
     foreach (PTime Time in new PTime[] {
         PPeriod.FirstFreeTime.During,
         PPeriod.SecondFreeTime.During
     })
     {
         MoveInHandTriggerList.Add((PPlayer Player, PCard Card) => {
             return(new PTrigger(CardName)
             {
                 IsLocked = false,
                 Player = Player,
                 Time = Time,
                 AIPriority = 21,
                 Condition = (PGame Game) => {
                     return Player.Equals(Game.NowPlayer) && (Player.IsAI || Game.Logic.WaitingForEndFreeTime());
                 },
                 AICondition = (PGame Game) => {
                     if (Player.General is P_WuZhao && Player.RemainLimit(PSkillInfo.女权.Name))
                     {
                         return false;
                     }
                     return PMath.Min(Player.Area.HandCardArea.CardList.FindAll((PCard _Card) => !_Card.Equals(Card)).ConvertAll((PCard _Card) => _Card.AIInHandExpectation(Game, Player))) <= 1000;
                 },
                 Effect = MakeMultiTargetNormalEffect(Player, Card, AIEmitTargets,
                                                      PTrigger.NoCondition,
                                                      (PGame Game, PPlayer User, PPlayer Target) => {
                     PCard Got = Game.GetCard(Target);
                     #region 成就:躺尸
                     if (Got.Model is P_ChiehShihHuanHun && User.Area.HandCardArea.CardList.Contains(Got))
                     {
                         PArch.Announce(Game, User, "躺尸");
                     }
                     #endregion
                     Game.ThrowCard(Target, Target);
                 })
             });
         });
     }
 }
Example #18
0
 public P_ChihSangMaHuai() : base(CardName)
 {
     Point = 5;
     Index = 26;
     foreach (PTime Time in new PTime[] {
         PTime.Injure.AcceptInjure
     })
     {
         MoveInHandTriggerList.Add((PPlayer Player, PCard Card) => {
             return(new PTrigger(CardName)
             {
                 IsLocked = false,
                 Player = Player,
                 Time = Time,
                 AIPriority = 200,
                 Condition = (PGame Game) => {
                     PInjureTag InjureTag = Game.TagManager.FindPeekTag <PInjureTag>(PInjureTag.TagName);
                     return Player.Equals(InjureTag.ToPlayer) && InjureTag.FromPlayer != null && InjureTag.Injure > 0 && Game.PlayerList.Exists((PPlayer _Player) => !_Player.Equals(InjureTag.FromPlayer) && !_Player.Equals(Player));
                 },
                 AICondition = (PGame Game) => {
                     PInjureTag InjureTag = Game.TagManager.FindPeekTag <PInjureTag>(PInjureTag.TagName);
                     return Player.Money <= InjureTag.Injure || (InjureTag.FromPlayer.TeamIndex != Player.TeamIndex && Game.Enemies(Player).Count < 2 && InjureTag.Injure >= 3000) && AIEmitTargets(Game, Player)[0] != null;
                 },
                 Effect = MakeNormalEffect(Player, Card, AIEmitTargets, (PGame Game, PPlayer _Player) => {
                     PInjureTag InjureTag = Game.TagManager.FindPeekTag <PInjureTag>(PInjureTag.TagName);
                     return !_Player.Equals(InjureTag.FromPlayer) && !_Player.Equals(Player);
                 },
                                           (PGame Game, PPlayer User, PPlayer Target) => {
                     PNetworkManager.NetworkServer.TellClients(new PPushTextOrder(User.Index.ToString(), "转移伤害给" + Target.Name, PPushType.Information.Name));
                     PInjureTag InjureTag = Game.TagManager.FindPeekTag <PInjureTag>(PInjureTag.TagName);
                     InjureTag.ToPlayer = Target;
                     #region 成就:弹弹弹
                     if (Target.Money <= InjureTag.Injure)
                     {
                         PArch.Announce(Game, User, "弹弹弹");
                     }
                     #endregion
                 })
             });
         });
     }
 }
 public P_ChiinTsevChiinWang() : base(CardName)
 {
     Point = 3;
     Index = 18;
     foreach (PTime Time in new PTime[] {
         PPeriod.FirstFreeTime.During,
         PPeriod.SecondFreeTime.During
     })
     {
         MoveInHandTriggerList.Add((PPlayer Player, PCard Card) => {
             return(new PTrigger(CardName)
             {
                 IsLocked = false,
                 Player = Player,
                 Time = Time,
                 AIPriority = 25,
                 Condition = (PGame Game) => {
                     return Player.Equals(Game.NowPlayer) && (Player.IsAI || Game.Logic.WaitingForEndFreeTime());
                 },
                 AICondition = (PGame Game) => {
                     return AIEmitTargets(Game, Player)[0] != null;
                 },
                 Effect = MakeNormalEffect(Player, Card, AIEmitTargets,
                                           (PGame Game, PPlayer _Player) => {
                     int MaxMoney = PMath.Max(Game.PlayerList, (PPlayer __Player) => __Player.Money).Value;
                     return _Player.Money == MaxMoney;
                 },
                                           (PGame Game, PPlayer User, PPlayer Target) => {
                     Game.ChangeFace(Target);
                     #region 成就:草头天子
                     if (User.Equals(Target))
                     {
                         PArch.Announce(Game, User, "草头天子");
                     }
                     #endregion
                 })
             });
         });
     }
 }
Example #20
0
 public P_LiTaiTaaoChiang() : base(CardName)
 {
     Point = 2;
     Index = 11;
     foreach (PTime Time in new PTime[] {
         PTime.Injure.AcceptInjure
     })
     {
         MoveInHandTriggerList.Add((PPlayer Player, PCard Card) => {
             return(new PTrigger(CardName)
             {
                 IsLocked = false,
                 Player = Player,
                 Time = Time,
                 AIPriority = 80,
                 Condition = (PGame Game) => {
                     PInjureTag InjureTag = Game.TagManager.FindPeekTag <PInjureTag>(PInjureTag.TagName);
                     return Player.Equals(InjureTag.ToPlayer) && InjureTag.FromPlayer != null && InjureTag.Injure > 0 && Player.HasHouse;
                 },
                 AICondition = (PGame Game) => {
                     PInjureTag InjureTag = Game.TagManager.FindPeekTag <PInjureTag>(PInjureTag.TagName);
                     return Player.Money <= InjureTag.Injure || (InjureTag.Injure >= 1000 + PAiMapAnalyzer.MaxValueHouse(Game, Player).Value&& InjureTag.FromPlayer.TeamIndex != Player.TeamIndex);
                 },
                 Effect = MakeNormalEffect(Player, Card, AIEmitTargets, AIEmitTargets,
                                           (PGame Game, PPlayer User, PPlayer Target) => {
                     PNetworkManager.NetworkServer.TellClients(new PPushTextOrder(User.Index.ToString(), "李代桃僵:防止伤害", PPushType.Information.Name));
                     #region 成就:桃李不言
                     if (Game.TagManager.FindPeekTag <PInjureTag>(PInjureTag.TagName).Injure >= User.Money)
                     {
                         PArch.Announce(Game, User, "桃李不言");
                     }
                     #endregion
                     Game.TagManager.FindPeekTag <PInjureTag>(PInjureTag.TagName).Injure = 0;
                     Game.ThrowHouse(Target, User, CardName);
                 })
             });
         });
     }
 }
 public P_ShunShouChiienYang() : base(CardName)
 {
     Point = 2;
     Index = 12;
     foreach (PTime Time in new PTime[] {
         PPeriod.FirstFreeTime.During,
         PPeriod.SecondFreeTime.During
     })
     {
         MoveInHandTriggerList.Add((PPlayer Player, PCard Card) => {
             return(new PTrigger(CardName)
             {
                 IsLocked = false,
                 Player = Player,
                 Time = Time,
                 AIPriority = 120,
                 Condition = (PGame Game) => {
                     return Player.Equals(Game.NowPlayer) && (Player.IsAI || Game.Logic.WaitingForEndFreeTime()) && Game.PlayerList.Find((PPlayer _Player) => _Player.Area.CardNumber > 0 && !_Player.Equals(Player)) != null;
                 },
                 AICondition = (PGame Game) => {
                     return AIEmitTargets(Game, Player)[0] != null;
                 },
                 Effect = MakeNormalEffect(Player, Card, AIEmitTargets, (PGame Game, PPlayer _Player) => {
                     return _Player.Area.CardNumber > 0 && !_Player.Equals(Player);
                 },
                                           (PGame Game, PPlayer User, PPlayer Target) => {
                     PCard Got = Game.GetCardFrom(User, Target, true, true, true);
                     #region 成就:名副其实
                     if (Got.Model is P_HsiYooYangToow && User.Area.HandCardArea.CardList.Contains(Got))
                     {
                         PArch.Announce(Game, User, "名副其实");
                     }
                     #endregion
                 })
             });
         });
     }
 }
Example #22
0
 public P_KuanMevnChoTsev() : base(CardName)
 {
     Point = 4;
     Index = 22;
     foreach (PTime Time in new PTime[] {
         PPeriod.FirstFreeTime.During,
         PPeriod.SecondFreeTime.During
     })
     {
         MoveInHandTriggerList.Add((PPlayer Player, PCard Card) => {
             return(new PTrigger(CardName)
             {
                 IsLocked = false,
                 Player = Player,
                 Time = Time,
                 AIPriority = 80,
                 Condition = (PGame Game) => {
                     return Player.Equals(Game.NowPlayer) && (Player.IsAI || Game.Logic.WaitingForEndFreeTime()) && AIEmitTargets(Game, Player).Count > 0;
                 },
                 AICondition = (PGame Game) => {
                     if (Player.General is P_WuZhao && Player.RemainLimit(PSkillInfo.女权.Name))
                     {
                         return false;
                     }
                     List <PPlayer> Targets = AIEmitTargets(Game, Player);
                     bool MultiTarget = Targets.Count > 1;
                     Targets = Targets.FindAll((PPlayer _Player) => !(_Player.HasEquipment <P_YooHsi>() && MultiTarget));
                     return PMath.Sum(Targets.ConvertAll((PPlayer Target) => (double)PAiTargetChooser.InjureExpect(Game, Player, Player, Target, 1000, Card))) >= 2000 &&
                     P_PanYue.XianJuTest(Game, Player);
                 },
                 Effect = MakeNormalEffect(Player, Card, AIEmitTargets, AIEmitTargets,
                                           (PGame Game, PPlayer User, PPlayer Target) => {
                     Game.Injure(User, Target, 1000, Card);
                 })
             });
         });
     }
 }
Example #23
0
 public P_LienHuanChi() : base(CardName)
 {
     Point = 6;
     Index = 35;
     foreach (PTime Time in new PTime[] {
         PPeriod.FirstFreeTime.During,
         PPeriod.SecondFreeTime.During
     })
     {
         MoveInHandTriggerList.Add((PPlayer Player, PCard Card) => {
             return(new PTrigger(CardName)
             {
                 IsLocked = false,
                 Player = Player,
                 Time = Time,
                 AIPriority = 50,
                 Condition = (PGame Game) => {
                     return Player.Equals(Game.NowPlayer) && (Player.IsAI || Game.Logic.WaitingForEndFreeTime());
                 },
                 AICondition = (PGame Game) => {
                     return !AIEmitTargets(Game, Player).Exists((PPlayer _Player) => _Player == null);
                 },
                 Effect = MakeMultiTargetNormalEffect(Player, Card, AIEmitTargets, PTrigger.NoCondition,
                                                      (PGame Game, PPlayer User, PPlayer Target) => {
                     if (!Target.Tags.ExistTag(PTag.LockedTag.Name))
                     {
                         Target.Tags.CreateTag(PTag.LockedTag);
                     }
                     else
                     {
                         Target.Tags.PopTag <PTag>(PTag.LockedTag.Name);
                     }
                 }, 2)
             });
         });
     }
 }
Example #24
0
 public P_KuuJouChi() : base(CardName)
 {
     Point = 6;
     Index = 34;
     foreach (PTime Time in new PTime[] {
         PPeriod.FirstFreeTime.During,
         PPeriod.SecondFreeTime.During
     })
     {
         MoveInHandTriggerList.Add((PPlayer Player, PCard Card) => {
             return(new PTrigger(CardName)
             {
                 IsLocked = false,
                 Player = Player,
                 Time = Time,
                 AIPriority = 20,
                 Condition = (PGame Game) => {
                     return Player.Equals(Game.NowPlayer) && (Player.IsAI || Game.Logic.WaitingForEndFreeTime());
                 },
                 AICondition = (PGame Game) => {
                     return Player.Money >= 3000;
                 },
                 Effect = MakeNormalEffect(Player, Card, AIEmitTargets, AIEmitTargets,
                                           (PGame Game, PPlayer User, PPlayer Target) => {
                     Game.LoseMoney(Target, 1000);
                     #region 成就:最后一滴血
                     if (User.Equals(Target) && !User.IsAlive)
                     {
                         PArch.Announce(Game, User, "最后一滴血");
                     }
                     #endregion
                     Game.GetCard(Target);
                 })
             });
         });
     }
 }
Example #25
0
 public P_CheevnHuoTaChieh() : base(CardName)
 {
     Point = 1;
     Index = 5;
     foreach (PTime Time in new PTime[] {
         PTime.Injure.AcceptInjure
     })
     {
         MoveInHandTriggerList.Add((PPlayer Player, PCard Card) => {
             return(new PTrigger(CardName)
             {
                 IsLocked = false,
                 Player = Player,
                 Time = Time,
                 AIPriority = 10,
                 Condition = (PGame Game) => {
                     PInjureTag InjureTag = Game.TagManager.FindPeekTag <PInjureTag>(PInjureTag.TagName);
                     return !Player.Equals(InjureTag.ToPlayer) && InjureTag.Injure > 0 && InjureTag.ToPlayer != null && InjureTag.ToPlayer.Area.HandCardArea.CardNumber + InjureTag.ToPlayer.Area.EquipmentCardArea.CardNumber > 0;
                 },
                 AICondition = (PGame Game) => {
                     PInjureTag InjureTag = Game.TagManager.FindPeekTag <PInjureTag>(PInjureTag.TagName);
                     return Player.TeamIndex != InjureTag.ToPlayer.TeamIndex && PAiCardExpectation.FindMostValuableToGet(Game, Player, InjureTag.ToPlayer).Value > 3000;
                 },
                 Effect = MakeNormalEffect(Player, Card, AIEmitTargets, AIEmitTargets,
                                           (PGame Game, PPlayer User, PPlayer Target) => {
                     PCard Got = Game.GetCardFrom(User, Target);
                     #region 成就:分一杯羹
                     if (Got.Model is P_MuNiuLiuMa && User.Area.HandCardArea.CardList.Contains(Got))
                     {
                         PArch.Announce(Game, User, "分一杯羹");
                     }
                     #endregion
                 })
             });
         });
     }
 }
Example #26
0
 public P_WuChungShevngYou() : base(CardName)
 {
     Point = 2;
     Index = 7;
     foreach (PTime Time in new PTime[] {
         PPeriod.FirstFreeTime.During,
         PPeriod.SecondFreeTime.During
     })
     {
         MoveInHandTriggerList.Add((PPlayer Player, PCard Card) => {
             return(new PTrigger(CardName)
             {
                 IsLocked = false,
                 Player = Player,
                 Time = Time,
                 AIPriority = 140,
                 Condition = (PGame Game) => {
                     return Player.Equals(Game.NowPlayer) && (Player.IsAI || Game.Logic.WaitingForEndFreeTime());
                 },
                 AICondition = (PGame Game) => {
                     return AIEmitTargets(Game, Player)[0] != null;
                 },
                 Effect = MakeNormalEffect(Player, Card, AIEmitTargets, AIEmitTargets,
                                           (PGame Game, PPlayer User, PPlayer Target) => {
                     List <PCard> Gots = Game.GetCard(Target, 2);
                     #region 成就:鸿运当头
                     if (Gots.Exists((PCard Got) => Got.Model is P_WuChungShevngYou && User.Area.HandCardArea.CardList.Contains(Got)))
                     {
                         PArch.Announce(Game, User, "鸿运当头");
                     }
                     #endregion
                 })
             });
         });
     }
 }
Example #27
0
 public P_YooenChiaoChinKung() : base(CardName)
 {
     Point = 4;
     Index = 23;
     foreach (PTime Time in new PTime[] {
         PPeriod.FirstFreeTime.During,
         PPeriod.SecondFreeTime.During
     })
     {
         MoveInHandTriggerList.Add((PPlayer Player, PCard Card) => {
             return(new PTrigger(CardName)
             {
                 IsLocked = false,
                 Player = Player,
                 Time = Time,
                 AIPriority = 75,
                 Condition = (PGame Game) => {
                     return Player.Equals(Game.NowPlayer) && (Player.IsAI || Game.Logic.WaitingForEndFreeTime());
                 },
                 AICondition = (PGame Game) => {
                     return AIEmitTargets(Game, Player)[0] != null;
                 },
                 Effect = MakeNormalEffect(Player, Card, AIEmitTargets, PTrigger.Except(Player),
                                           (PGame Game, PPlayer User, PPlayer Target) => {
                     Game.GetCard(Target);
                     PPlayer Another = null;
                     if (User.IsAI)
                     {
                         if (Game.Enemies(User).Exists((PPlayer _Player) => _Player.Money <= 1000) || User.Money > 15000)
                         {
                             Another = PMath.Min(Game.Enemies(User), (PPlayer _Player) => _Player.Money).Key;
                         }
                         else
                         {
                             Another = User;
                         }
                     }
                     else
                     {
                         Another = PNetworkManager.NetworkServer.ChooseManager.AskForTargetPlayer(User, PTrigger.Except(Target), "远交近攻[第二目标]");
                     }
                     if (Another != null)
                     {
                         if (Another.Equals(User))
                         {
                             Game.GetMoney(Another, 1000);
                         }
                         else
                         {
                             Game.LoseMoney(Another, 1000);
                             #region 成就:翻云覆雨
                             if (!Another.IsAlive)
                             {
                                 PArch.Announce(Game, User, "翻云覆雨");
                             }
                             #endregion
                         }
                     }
                 })
             });
         });
     }
 }
Example #28
0
    public P_ShuShangKaaiHua() : base(CardName)
    {
        Point = 5;
        Index = 29;
        foreach (PTime Time in new PTime[] {
            PPeriod.FirstFreeTime.During,
            PPeriod.SecondFreeTime.During
        })
        {
            MoveInHandTriggerList.Add((PPlayer Player, PCard Card) => {
                return(new PTrigger(CardName)
                {
                    IsLocked = false,
                    Player = Player,
                    Time = Time,
                    AIPriority = 100,
                    Condition = (PGame Game) => {
                        return Player.Equals(Game.NowPlayer) && (Player.IsAI || Game.Logic.WaitingForEndFreeTime()) && Game.Map.BlockList.Exists((PBlock Block) => Block.Lord != null);
                    },
                    AICondition = (PGame Game) => {
                        return PMath.Max(Game.Map.BlockList.FindAll((PBlock Block) => Block.Lord != null && Block.Lord.TeamIndex == Player.TeamIndex), (PBlock Block) => {
                            return PAiMapAnalyzer.HouseValue(Game, Block.Lord, Block);
                        }).Value >= 2500;
                    },
                    Effect = (PGame Game) => {
                        List <PPlayer> Targets = new List <PPlayer>();
                        Game.Monitor.CallTime(PTime.Card.AfterEmitTargetTime, new PUseCardTag(Card, Player, Targets));
                        if (Player.Area.EquipmentCardArea.CardList.Contains(Card))
                        {
                            Game.CardManager.MoveCard(Card, Player.Area.EquipmentCardArea, Game.CardManager.SettlingArea);
                        }
                        else
                        {
                            Game.CardManager.MoveCard(Card, Player.Area.HandCardArea, Game.CardManager.SettlingArea);
                        }
                        Game.Monitor.CallTime(PTime.Card.AfterBecomeTargetTime, new PUseCardTag(Card, Player, Targets));

                        PBlock Target = null;
                        if (Player.IsAI)
                        {
                            Target = AIEmitTarget(Game, Player);
                        }
                        else
                        {
                            Target = PNetworkManager.NetworkServer.ChooseManager.AskToChooseBlock(Player, "树上开花[选择有主土地]", (PBlock Block) => Block.Lord != null);
                        }
                        if (Target != null)
                        {
                            PNetworkManager.NetworkServer.TellClients(new PHighlightBlockOrder(Target.Index.ToString()));
                            Game.GetHouse(Target, 1);
                            #region 成就:花开富贵
                            if (Target.BusinessType.Equals(PBusinessType.Park))
                            {
                                PArch.Announce(Game, Player, "花开富贵");
                            }
                            #endregion
                        }

                        Game.CardManager.MoveCard(Card, Game.CardManager.SettlingArea, Game.CardManager.ThrownCardHeap);
                        Game.Monitor.CallTime(PTime.Card.EndSettleTime, new PUseCardTag(Card, Player, Targets));
                    }
                });
            });
        }
    }
Example #29
0
 public P_PaaoChuanYinYoo() : base(CardName)
 {
     Point = 3;
     Index = 17;
     foreach (PTime Time in new PTime[] {
         PPeriod.FirstFreeTime.During,
         PPeriod.SecondFreeTime.During
     })
     {
         MoveInHandTriggerList.Add((PPlayer Player, PCard Card) => {
             return(new PTrigger(CardName)
             {
                 IsLocked = false,
                 Player = Player,
                 Time = Time,
                 AIPriority = 140,
                 Condition = (PGame Game) => {
                     return Player.Equals(Game.NowPlayer) && (Player.IsAI || Game.Logic.WaitingForEndFreeTime()) && Game.Map.BlockList.Exists((PBlock Block) => Player.Equals(Block.Lord)) && (Player.Area.EquipmentCardArea.CardNumber > 0 || Player.Area.HandCardArea.CardList.Exists((PCard _Card) => Card.Type.IsEquipment())) && AIEmitTargets(Game, Player).Count > 0;
                 },
                 AICondition = (PGame Game) => {
                     if (Player.General is P_WuZhao && Player.RemainLimit(PSkillInfo.女权.Name))
                     {
                         return false;
                     }
                     return Player.Area.HandCardArea.CardList.Exists((PCard _Card) => Card.Type.IsEquipment()) && AIInHandExpectation(Game, Player) > 2000;
                 },
                 Effect = MakeNormalEffect(Player, Card, AIEmitTargets, AIEmitTargets,
                                           (PGame Game, PPlayer User, PPlayer Target) => {
                     if (Target.HasHouse)
                     {
                         PBlock TargetBlock = null;
                         if (Target.IsAI)
                         {
                             TargetBlock = PAiMapAnalyzer.MinValueHouse(Game, Target).Key;
                         }
                         else
                         {
                             TargetBlock = PNetworkManager.NetworkServer.ChooseManager.AskToChooseBlock(Target, "选择一座房屋以交给" + User.Name, (PBlock Block) => Target.Equals(Block.Lord) && Block.HouseNumber > 0);
                         }
                         if (TargetBlock != null)
                         {
                             Game.LoseHouse(TargetBlock, 1);
                             TargetBlock = null;
                             if (User.IsAI)
                             {
                                 TargetBlock = PAiMapAnalyzer.MaxValueHouse(Game, User, true).Key;
                             }
                             else
                             {
                                 TargetBlock = PNetworkManager.NetworkServer.ChooseManager.AskToChooseBlock(User, "选择一处你的土地放置房屋", (PBlock Block) => User.Equals(Block.Lord));
                             }
                             if (TargetBlock != null)
                             {
                                 Game.GetHouse(TargetBlock, 1);
                             }
                         }
                     }
                 }, (PGame Game, PPlayer User, List <PPlayer> Targets) => {
                     PCard TargetCard = null;
                     if (User.IsAI)
                     {
                         TargetCard = PMath.Min(User.Area.HandCardArea.CardList.FindAll((PCard _Card) => _Card.Type.IsEquipment()), (PCard _Card) => _Card.Model.AIInHandExpectation(Game, User)).Key;
                     }
                     else
                     {
                         do
                         {
                             TargetCard = PNetworkManager.NetworkServer.ChooseManager.AskToChooseOwnCard(User, CardName + "[选择一张装备牌]", true, true);
                         } while (!TargetCard.Type.IsEquipment());
                     }
                     Game.CardManager.MoveCard(TargetCard, User.Area.HandCardArea.CardList.Contains(TargetCard) ? User.Area.HandCardArea : User.Area.EquipmentCardArea, Game.CardManager.ThrownCardHeap);
                 })
             });
         });
     }
 }
Example #30
0
 public P_ChiehTaoShaJevn() : base(CardName)
 {
     Point = 1;
     Index = 3;
     foreach (PTime Time in new PTime[] {
         PPeriod.FirstFreeTime.During,
         PPeriod.SecondFreeTime.During
     })
     {
         MoveInHandTriggerList.Add((PPlayer Player, PCard Card) => {
             return(new PTrigger(CardName)
             {
                 IsLocked = false,
                 Player = Player,
                 Time = Time,
                 AIPriority = 110,
                 Condition = (PGame Game) => {
                     return Player.Equals(Game.NowPlayer) && (Player.IsAI || Game.Logic.WaitingForEndFreeTime()) && Game.PlayerList.Exists((PPlayer _Player ) => !_Player.Equals(Player) && _Player.Area.EquipmentCardArea.CardNumber > 0);
                 },
                 AICondition = (PGame Game) => {
                     return AIEmitTargets(Game, Player)[0] != null;
                 },
                 Effect = MakeNormalEffect(Player, Card, AIEmitTargets, (PGame Game, PPlayer _Player) => {
                     return !_Player.Equals(Player) && _Player.Area.EquipmentCardArea.CardNumber > 0;
                 },
                                           (PGame Game, PPlayer User, PPlayer Target) => {
                     int ChosenResult = -1;
                     if (!Target.HasHouse || User.LandNumber == 0)
                     {
                         if (Target.Area.EquipmentCardArea.CardNumber > 0)
                         {
                             ChosenResult = 1;
                         }
                     }
                     else if (Target.Area.EquipmentCardArea.CardNumber == 0)
                     {
                         ChosenResult = 0;
                     }
                     else
                     {
                         if (Target.IsAI)
                         {
                             ChosenResult = PAiMapAnalyzer.MaxValueHouse(Game, Target).Value > PAiCardExpectation.FindMostValuable(Game, Target, Target, false).Value ? 1 : 0;
                         }
                         else
                         {
                             ChosenResult = PNetworkManager.NetworkServer.ChooseManager.Ask(Target, CardName + "-选择一项", new string[] {
                                 "令" + User.Name + "获得你1座房屋",
                                 "令" + User.Name + "获得你1张装备"
                             });
                         }
                     }
                     if (ChosenResult == 0)
                     {
                         PBlock TargetBlock = null;
                         if (User.IsAI)
                         {
                             TargetBlock = PAiMapAnalyzer.MaxValueHouse(Game, Target).Key;
                         }
                         else
                         {
                             TargetBlock = PNetworkManager.NetworkServer.ChooseManager.AskToChooseBlock(User, "选择一座" + Target.Name + "的房屋", (PBlock Block) => Target.Equals(Block.Lord) && Block.HouseNumber > 0);
                         }
                         if (TargetBlock != null)
                         {
                             Game.LoseHouse(TargetBlock, 1);
                             if (User.IsAI)
                             {
                                 TargetBlock = PAiMapAnalyzer.MaxValueHouse(Game, User, true).Key;
                             }
                             else
                             {
                                 TargetBlock = PNetworkManager.NetworkServer.ChooseManager.AskToChooseBlock(User, "选择一处你的土地放置房屋", (PBlock Block) => User.Equals(Block.Lord));
                             }
                             if (TargetBlock != null)
                             {
                                 Game.GetHouse(TargetBlock, 1);
                             }
                         }
                     }
                     else if (ChosenResult == 1)
                     {
                         PCard Got = Game.GetCardFrom(User, Target, false);
                         #region 成就:老司机
                         if (Got.Model is P_ToouShihChi && User.Area.HandCardArea.CardList.Contains(Got))
                         {
                             PArch.Announce(Game, User, "老司机");
                         }
                         #endregion
                     }
                 })
             });
         });
     }
 }