public override WrappedCard ViewAs(Room room, List <WrappedCard> cards, Player player) { if ((!Optional && cards.Count > 0) || cards.Count + Reserved.Count >= MinNum) { card.ClearSubCards(); card.AddSubCards(cards); card.AddSubCards(Reserved); return(card); } else { return(null); } }
public override List <WrappedCard> GetGuhuoCards(Room room, List <WrappedCard> cards, Player player) { List <WrappedCard> result = new List <WrappedCard>(); if (cards.Count == 1) { foreach (FunctionCard fcard in room.AvailableFunctionCards) { if (fcard.Name == BefriendAttacking.ClassName && (player.GetMark(Name) == 0 || player.GetMark(Name) == 1)) { WrappedCard ba = new WrappedCard(BefriendAttacking.ClassName) { Skill = Name, ShowSkill = Name, }; ba.AddSubCards(cards); result.Add(ba); } if (fcard.Name == KnownBoth.ClassName && (player.GetMark(Name) == 0 || player.GetMark(Name) == 2)) { WrappedCard kb = new WrappedCard(KnownBoth.ClassName) { Skill = Name, ShowSkill = Name, }; kb.AddSubCards(cards); result.Add(kb); } } } return(result); }
public override WrappedCard ViewAs(Room room, List <WrappedCard> cards, Player player) { if (cards.Count == 0 || cards.Count > max_num) { return(null); } card.ClearSubCards(); card.AddSubCards(cards); return(card); }
public override WrappedCard ViewAs(Room room, List <WrappedCard> cards, Player player) { if (cards.Count == 1 && cards[0].SubCards.Count == 1) { WrappedCard shefu = new WrappedCard(ShefuCard.ClassName) { Skill = Name, UserString = cards[0].Name }; shefu.AddSubCards(cards); return(shefu); } return(null); }
public override WrappedCard ViewAs(Room room, List <WrappedCard> cards, Player player) { if (cards.Count == 0) { return(null); } WrappedCard zhiheng_card = new WrappedCard("ZhihengCard") { Skill = "zhiheng", Mute = true }; zhiheng_card.AddSubCards(cards); return(zhiheng_card); }
public override WrappedCard ViewAs(Room room, List <WrappedCard> cards, Player player) { if (cards.Count == 0) { return(null); } if (cards.Count >= minnum) { card.ClearSubCards(); card.AddSubCards(cards); return(card); } else { return(null); } }
public override List <WrappedCard> GetGuhuoCards(Room room, List <WrappedCard> cards, Player player) { List <WrappedCard> result = new List <WrappedCard>(); foreach (string name in GuhuoCards(room, player)) { FunctionCard fcard = Engine.GetFunctionCard(name); if (fcard is Slash && name != Slash.ClassName) { continue; } if (player.ContainsTag(string.Format("shefu_{0}", name))) { continue; } WrappedCard card = new WrappedCard(name); card.AddSubCards(cards); result.Add(card); } return(result); }
public override List <WrappedCard> GetTurnUse(TrustedAI ai, Player player) { Room room = ai.Room; ai.Target[Name] = null; if (player.HasUsed(ClassicWoodenOxCard.ClassName) || player.IsKongcheng() || player.GetPile("wooden_ox").Count >= 5) { return(null); } List <int> cards = player.GetCards("h"); int sub = -1; foreach (int id in cards) { WrappedCard card = room.GetCard(id); if (card.Name == DragonPhoenix.ClassName) { Player target = null; foreach (Player p in room.GetOtherPlayers(player)) { if (ai.HasSkill("zhangwu", p)) { target = p; break; } } if (target != null && !ai.IsFriend(target, player) || !ai.HasSkill(TrustedAI.LoseEquipSkill, player)) { sub = id; break; } } else if (card.Name == PeaceSpell.ClassName) { Player target = null; foreach (Player p in room.GetOtherPlayers(player)) { if (ai.HasSkill("wendao", p)) { target = p; break; } } if (target != null && !ai.IsFriend(target, player)) { sub = id; break; } } else if (card.Name == LuminouSpearl.ClassName) { Player target = null; foreach (Player p in room.GetOtherPlayers(player)) { if (ai.HasSkill("jubao", p)) { target = p; break; } } if (target != null && !ai.IsFriend(target, player)) { sub = id; break; } } } ai.SortByUseValue(ref cards); bool keep = false; if (ai.HasSkill("jijiu")) { foreach (Player p in ai.GetFriends(player)) { if (ai.IsWeak(p)) { keep = true; break; } } } if (!keep) { List <Player> targets = new List <Player>(); foreach (Player p in ai.FriendNoSelf) { if (RoomLogic.CanPutEquip(p, room.GetCard(player.Treasure.Key)) && ai.GetSameEquip(room.GetCard(player.Treasure.Key), p) == null) { targets.Add(p); } } Player next = null; room.SortByActionOrder(ref targets); foreach (Player p in targets) { if (!ai.WillSkipPlayPhase(p)) { next = p; break; } } if (next != null) { if (sub != -1) { ai.Target[Name] = next; WrappedCard card = new WrappedCard(ClassicWoodenOxCard.ClassName) { Skill = Name }; card.AddSubCard(sub); return(new List <WrappedCard> { card }); } else { KeyValuePair <Player, int> result = ai.GetCardNeedPlayer(cards, new List <Player> { next }); if (result.Key != null) { ai.Target[Name] = next; WrappedCard card = new WrappedCard(ClassicWoodenOxCard.ClassName) { Skill = Name }; card.AddSubCard(result.Value); return(new List <WrappedCard> { card }); } } } else if (ai.HasSkill(TrustedAI.LoseEquipSkill) && targets.Count > 0) { if (sub != -1) { ai.Target[Name] = targets[0]; WrappedCard card = new WrappedCard(ClassicWoodenOxCard.ClassName) { Skill = Name }; card.AddSubCard(sub); return(new List <WrappedCard> { card }); } else { ai.Target[Name] = targets[0]; ai.SortByUseValue(ref cards, false); WrappedCard card = new WrappedCard(ClassicWoodenOxCard.ClassName) { Skill = Name }; card.AddSubCard(cards[0]); return(new List <WrappedCard> { card }); } } else if (targets.Count > 0) { List <Player> weaks = new List <Player>(); foreach (Player p in targets) { if (ai.IsWeak(p)) { weaks.Add(p); } } if (sub != -1 && weaks.Count > 0) { ai.SortByDefense(ref weaks, false); ai.Target[Name] = weaks[0]; WrappedCard card = new WrappedCard(ClassicWoodenOxCard.ClassName) { Skill = Name }; card.AddSubCard(sub); return(new List <WrappedCard> { card }); } KeyValuePair <Player, int> result = ai.GetCardNeedPlayer(cards, weaks); if (result.Key != null) { ai.Target[Name] = result.Key; WrappedCard card = new WrappedCard(ClassicWoodenOxCard.ClassName) { Skill = Name }; card.AddSubCard(result.Value); return(new List <WrappedCard> { card }); } } } if (ai.GetOverflow(player) > 0) { WrappedCard card = new WrappedCard(ClassicWoodenOxCard.ClassName) { Skill = Name }; if (sub != -1) { card.AddSubCard(sub); } else { ai.SortByKeepValue(ref cards, false); card.AddSubCard(cards[ai.GetOverflow(player) - 1]); } return(new List <WrappedCard> { card }); } if (player.HandcardNum == 1 && ai.HasSkill("kongcheng|kongcheng_jx")) { WrappedCard card = new WrappedCard(ClassicWoodenOxCard.ClassName) { Skill = Name }; card.AddSubCards(player.GetCards("h")); return(new List <WrappedCard> { card }); } return(null); }