public override List <TriggerStruct> Triggerable(TriggerEvent triggerEvent, Room room, Player player, ref object data) { List <TriggerStruct> triggers = new List <TriggerStruct>(); if (triggerEvent == TriggerEvent.EventPhaseStart && player.Phase == Player.PlayerPhase.Finish && base.Triggerable(player, room) && !player.IsKongcheng() && ShefuVS.GuhuoCards(room, player).Count > 0) { triggers.Add(new TriggerStruct(Name, player)); } else if (triggerEvent == TriggerEvent.CardUsed && data is CardUseStruct use && use.Card != null && use.To.Count > 0 && use.IsHandcard) { FunctionCard fcard = Engine.GetFunctionCard(use.Card.Name); if (fcard is SkillCard) { return(triggers); } List <Player> chengyus = RoomLogic.FindPlayersBySkillName(room, Name); string card_name = fcard.Name; if (fcard is Slash) { card_name = Slash.ClassName; } foreach (Player p in chengyus) { if (p != player && p.Phase == Player.PlayerPhase.NotActive && p.ContainsTag(string.Format("shefu_{0}", card_name)) && p.GetTag(string.Format("shefu_{0}", card_name)) is int id && p.GetPile("ambush").Contains(id)) { triggers.Add(new TriggerStruct(Name, p)); } } }
public override List <TriggerStruct> Triggerable(TriggerEvent triggerEvent, Room room, Player player, ref object data) { List <TriggerStruct> triggers = new List <TriggerStruct>(); if (triggerEvent == TriggerEvent.EventPhaseStart && player.Phase == PlayerPhase.Finish) { List <Player> hx = RoomLogic.FindPlayersBySkillName(room, Name); foreach (Player p in hx) { if (p.HandcardNum < p.Hp) { triggers.Add(new TriggerStruct(Name, p)); } } } else if (triggerEvent == TriggerEvent.Damaged && player.Alive) { List <Player> hx = RoomLogic.FindPlayersBySkillName(room, Name); foreach (Player p in hx) { if (p != player && p.Camp == player.Camp && !player.IsNude() && RoomLogic.CanDiscard(room, p, p, "he")) { triggers.Add(new TriggerStruct(Name, p)); } } } return(triggers); }
public override int GetCorrect(Room room, Player from, Player to, WrappedCard card = null) { int distance = 0; List <Player> players = RoomLogic.FindPlayersBySkillName(room, Name); foreach (Player p in players) { if (from.Camp == p.Camp) { distance -= 1; } } return(distance); }
public override List <TriggerStruct> Triggerable(TriggerEvent triggerEvent, Room room, Player player, ref object data) { List <TriggerStruct> triggers = new List <TriggerStruct>(); List <Player> nd = RoomLogic.FindPlayersBySkillName(room, Name); foreach (Player p in nd) { if (p.MaxHp > 1) { triggers.Add(new TriggerStruct(Name, p)); } } return(triggers); }
public override List <TriggerStruct> Triggerable(TriggerEvent triggerEvent, Room room, Player player, ref object data) { List <TriggerStruct> triggers = new List <TriggerStruct>(); if (player.Alive && player.HasFlag("Global_Dying") && player.Hp < 1) { foreach (Player p in RoomLogic.FindPlayersBySkillName(room, Name)) { if (p.Camp == player.Camp && p.GetMark(limit_mark) > 0) { triggers.Add(new TriggerStruct(Name, p)); } } } return(triggers); }
public override List <TriggerStruct> Triggerable(TriggerEvent triggerEvent, Room room, Player player, ref object data) { List <TriggerStruct> triggers = new List <TriggerStruct>(); if (player.Alive && data is DamageStruct damage && damage.Card != null && damage.Card.Name.Contains(Slash.ClassName) && !damage.Transfer && !damage.Chain) { List <Player> lords = RoomLogic.FindPlayersBySkillName(room, Name); foreach (Player p in lords) { if (p.Camp == player.Camp) { triggers.Add(new TriggerStruct(name, p)); } } } return(triggers); }
public override List <TriggerStruct> Triggerable(TriggerEvent triggerEvent, Room room, Player player, ref object data) { List <TriggerStruct> skill_list = new List <TriggerStruct>(); if (player.Alive && player.Phase == PlayerPhase.Finish && player.HandcardNum < player.Hp) { List <Player> lifengs = RoomLogic.FindPlayersBySkillName(room, Name); foreach (Player p in lifengs) { if (p.GetPile("commissariat").Count > 0) { TriggerStruct trigger = new TriggerStruct(Name, p); skill_list.Add(trigger); } } } return(skill_list); }
public override List <TriggerStruct> Triggerable(TriggerEvent triggerEvent, Room room, Player player, ref object data) { List <TriggerStruct> triggers = new List <TriggerStruct>(); if (data is DeathStruct death) { if (base.Triggerable(player, room)) { triggers.Add(new TriggerStruct(Name, player)); } else if (death.Damage.From != null && death.Damage.From.Camp != player.Camp) { foreach (Player p in RoomLogic.FindPlayersBySkillName(room, Name)) { if (p.Camp == death.Damage.From.Camp) { triggers.Add(new TriggerStruct(Name, p)); } } } } return(triggers); }