예제 #1
0
        public override bool Effect(TriggerEvent triggerEvent, Room room, Player target, ref object data, Player ask_who, TriggerStruct info)
        {
            CardsMoveOneTimeStruct move = (CardsMoveOneTimeStruct)data;
            Player player = move.From;

            if (player.HasTreasure("ClassicWoodenOx"))
            {
                int count = 0;
                for (int i = 0; i < move.Card_ids.Count; i++)
                {
                    if (move.From_pile_names[i] == "wooden_ox")
                    {
                        count++;
                    }
                }
                if (count > 0)
                {
                    LogMessage log = new LogMessage
                    {
                        Type = "#WoodenOx",
                        From = player.Name,
                        Arg  = count.ToString(),
                        Arg2 = "wooden_ox"
                    };
                    room.SendLog(log);
                }
            }
            else if (player.GetPile("wooden_ox").Count > 0)
            {
                for (int i = 0; i < move.Card_ids.Count; i++)
                {
                    if (move.From_places[i] != Place.PlaceEquip && move.From_places[i] != Place.PlaceTable)
                    {
                        continue;
                    }
                    WrappedCard card = Engine.GetRealCard(move.Card_ids[i]);
                    if (card?.Name == "ClassicWoodenOx")
                    {
                        Player to = move.To;
                        if (to != null && to.GetTreasure() && to.Treasure.Value == "ClassicWoodenOx" &&
                            move.To_place == Place.PlaceEquip && move.Reason.Reason == MoveReason.S_REASON_TRANSFER)
                        {
                            List <Player> p_list = new List <Player> {
                                to
                            };
                            room.AddToPile(to, "wooden_ox", player.GetPile("wooden_ox"), false, p_list,
                                           new CardMoveReason(MoveReason.S_REASON_TRANSFER, player.Name));
                        }
                        else
                        {
                            room.ClearOnePrivatePile(player, "wooden_ox");
                        }
                        return(false);
                    }
                }
            }

            return(false);
        }
예제 #2
0
        public override TriggerStruct Triggerable(TriggerEvent triggerEvent, Room room, Player target, ref object data, Player ask_who)
        {
            CardsMoveOneTimeStruct move = (CardsMoveOneTimeStruct)data;

            if (move.From == null || !move.From.Alive)
            {
                return(new TriggerStruct());
            }

            Player player = move.From;

            if (player.HasTreasure("ClassicWoodenOx"))
            {
                int count = 0;
                for (int i = 0; i < move.Card_ids.Count; i++)
                {
                    if (move.From_pile_names[i] == "wooden_ox")
                    {
                        count++;
                    }
                }

                if (count > 0)
                {
                    return(new TriggerStruct(Name, player));
                }
            }
            else if (player.GetPile("wooden_ox").Count > 0)
            {
                for (int i = 0; i < move.Card_ids.Count; i++)
                {
                    if (move.From_places[i] != Place.PlaceEquip && move.From_places[i] != Place.PlaceTable)
                    {
                        continue;
                    }
                    WrappedCard card = Engine.GetRealCard(move.Card_ids[i]);
                    if (card?.Name == "ClassicWoodenOx")
                    {
                        return(new TriggerStruct(Name, player));
                    }
                }
            }

            return(new TriggerStruct());
        }