Example #1
0
        public YanHuo()
        {
            var trigger = new AutoNotifyPassiveSkillTrigger(
                this,
                (p, e, a) => { return(true); },
                (p, e, a) =>
            {
                int X           = p.HandCards().Count + p.Equipments().Count;
                Player opponent = Game.CurrentGame.Players.First(pl => pl != p);
                Trace.Assert(opponent != null);
                while (X-- > 0 && opponent.HandCards().Count + opponent.Equipments().Count > 0)
                {
                    List <DeckPlace> decks = new List <DeckPlace>()
                    {
                        new DeckPlace(opponent, DeckType.Hand), new DeckPlace(opponent, DeckType.Equipment)
                    };
                    List <List <Card> > answer;
                    if (!p.AskForCardChoice(new CardChoicePrompt("YanHuo"), decks, new List <string>()
                    {
                        "YanHuo"
                    }, new List <int>()
                    {
                        1
                    }, new RequireOneCardChoiceVerifier(true), out answer))
                    {
                        answer = new List <List <Card> >();
                        answer.Add(Game.CurrentGame.PickDefaultCardsFrom(decks));
                    }
                    Game.CurrentGame.HandleCardDiscard(opponent, answer[0]);
                }
            },
                TriggerCondition.OwnerIsTarget
                );

            Triggers.Add(GameEvent.PlayerIsDead, trigger);
            IsAutoInvoked = true;
        }
Example #2
0
        public HatSwitch() : base("Hat Switch", new Size(100d, 100d))
        {
            _centerImage = "{Helios}/Images/Hats/hat-center.png";
            _upImage     = "{Helios}/Images/Hats/hat-up.png";
            _downImage   = "{Helios}/Images/Hats/hat-down.png";
            _leftImage   = "{Helios}/Images/Hats/hat-left.png";
            _rightImage  = "{Helios}/Images/Hats/hat-right.png";

            _upTrigger = new HeliosTrigger(this, "", "up", "entered", "Triggered when the hat is moved into the up position.");
            Triggers.Add(_upTrigger);
            _upExitTrigger = new HeliosTrigger(this, "", "up", "exited", "Triggered when the hat is returning from the up position.");
            Triggers.Add(_upExitTrigger);
            _downTrigger = new HeliosTrigger(this, "", "down", "entered", "Triggered when the hat is moved into the down position.");
            Triggers.Add(_downTrigger);
            _downExitTrigger = new HeliosTrigger(this, "", "down", "exited", "Triggered when the hat is returning from the down position.");
            Triggers.Add(_downExitTrigger);
            _leftTrigger = new HeliosTrigger(this, "", "left", "entered", "Triggered when the hat is moved into the left position.");
            Triggers.Add(_leftTrigger);
            _leftExitTrigger = new HeliosTrigger(this, "", "left", "exited", "Triggered when the hat is returning from the left position.");
            Triggers.Add(_leftExitTrigger);
            _rightTrigger = new HeliosTrigger(this, "", "right", "entered", "Triggered when the hat is moved into the right position.");
            Triggers.Add(_rightTrigger);
            _rightExitTrigger = new HeliosTrigger(this, "", "right", "exited", "Triggered when the hat is returning from the right position.");
            Triggers.Add(_rightExitTrigger);
            _centerTrigger = new HeliosTrigger(this, "", "center", "entered", "Triggered when the hat is moved back to the center position.");
            Triggers.Add(_centerTrigger);
            _centerExitTrigger = new HeliosTrigger(this, "", "center", "exited", "Triggered when the hat is exiting from the center position.");
            Triggers.Add(_centerExitTrigger);

            _positionValue          = new HeliosValue(this, new BindingValue((double)SwitchPosition), "", "position", "Current position of the hat switch.", "Position 0 = center, 1 = up, 2 = down, 3 = left,  or 4 = right.", BindingValueUnits.Numeric);
            _positionValue.Execute += new HeliosActionHandler(SetPositionAction_Execute);
            Values.Add(_positionValue);
            Triggers.Add(_positionValue);
            Actions.Add(_positionValue);

            UpdatePoints();
        }
Example #3
0
        public ZhiYan()
        {
            var trigger = new AutoNotifyUsagePassiveSkillTrigger(
                this,
                (p, e, a) => { return(true); },
                (p, e, a, c, pls) =>
            {
                Game.CurrentGame.SyncImmutableCardAll(Game.CurrentGame.PeekCard(0));
                Card card = Game.CurrentGame.PeekCard(0);
                Game.CurrentGame.DrawCards(pls[0], 1);
                Game.CurrentGame.SyncImmutableCardAll(card);
                if (card.Type.BaseCategory() == CardCategory.Equipment)
                {
                    Game.CurrentGame.RecoverHealth(pls[0], pls[0], 1);
                    var args     = new GameEventArgs();
                    args.Source  = pls[0];
                    args.Targets = new List <Player>();
                    args.Skill   = null;
                    args.Cards   = new List <Card>()
                    {
                        card
                    };
                    Game.CurrentGame.Emit(GameEvent.CommitActionToTargets, args);
                }
                else
                {
                    Game.CurrentGame.HideHandCard(card);
                }
            },
                TriggerCondition.OwnerIsSource,
                new ZhiYanVerifier()
                )
            {
            };

            Triggers.Add(GameEvent.PhaseBeginEvents[TurnPhase.End], trigger);
        }
Example #4
0
            public ZhuGeLianNuSkill()
            {
                var trigger = new AutoNotifyPassiveSkillTrigger(
                    this,
                    (p, e, a) =>
                {
                    return(a.Source[Sha.NumberOfShaUsed] > 0 && a.Card.Type is Sha);
                },
                    (p, e, a) => { },
                    TriggerCondition.OwnerIsSource
                    );
                var trigger2 = new AutoNotifyPassiveSkillTrigger(
                    this,
                    (p, e, a) => { throw new TriggerResultException(TriggerResult.Success); },
                    TriggerCondition.OwnerIsSource
                    )
                {
                    IsAutoNotify = false
                };
                var trigger3 = new AutoNotifyPassiveSkillTrigger(
                    this,
                    (p, e, a) =>
                {
                    ShaEventArgs args      = (ShaEventArgs)a;
                    args.TargetApproval[0] = true;
                },
                    TriggerCondition.OwnerIsSource
                    )
                {
                    IsAutoNotify = false, Priority = int.MaxValue, Type = TriggerType.Skill
                };

                Triggers.Add(GameEvent.PlayerUsedCard, trigger);
                Triggers.Add(Sha.PlayerNumberOfShaCheck, trigger2);
                Triggers.Add(Sha.PlayerShaTargetValidation, trigger3);
                IsEnforced = true;
            }
Example #5
0
        public BaoNveGivenSkill()
        {
            var trigger = new AutoNotifyPassiveSkillTrigger(
                this,
                (p, e, a) => { return(a.ReadonlyCard[BaoNveUsable] == 1); },
                (p, e, a) =>
            {
                NotifySkillUse(new List <Player>()
                {
                    Master
                });
                a.ReadonlyCard[BaoNveUsable] = 0;
                var result = Game.CurrentGame.Judge(p, this, null, (judgeResultCard) => { return(judgeResultCard.Suit == SuitType.Spade); });
                if (result.Suit == SuitType.Spade)
                {
                    Game.CurrentGame.RecoverHealth(p, Master, 1);
                }
            },
                TriggerCondition.OwnerIsSource
                )
            {
                IsAutoNotify = false
            };

            Triggers.Add(GameEvent.AfterDamageCaused, trigger);
            var trigger2 = new AutoNotifyPassiveSkillTrigger(
                this,
                (p, e, a) => { a.ReadonlyCard[BaoNveUsable] = 1; },
                TriggerCondition.OwnerIsSource
                )
            {
                IsAutoNotify = false, AskForConfirmation = false, Priority = int.MinValue
            };

            Triggers.Add(GameEvent.DamageInflicted, trigger2);
            IsAutoInvoked = false;
        }
Example #6
0
        public void Add(DbSchemaObject schemaObject)
        {
            switch (schemaObject.SchemaObjectType)
            {
            case ESchemaObjectType.Table:
                Tables.Add((DbTable)schemaObject);
                break;

            case ESchemaObjectType.View:
                Views.Add((DbView)schemaObject);
                break;

            case ESchemaObjectType.StoredProcedure:
                StoredProcs.Add((DbStoredProc)schemaObject);
                break;

            case ESchemaObjectType.ScalarFunction:
                ScalarFunctions.Add((DbScalarFunction)schemaObject);
                break;

            case ESchemaObjectType.TableFunction:
                TableFunctions.Add((DbTableFunction)schemaObject);
                break;

            case ESchemaObjectType.Trigger:
                Triggers.Add((DbTrigger)schemaObject);
                break;

            case ESchemaObjectType.ForeignKey:
                ForeignKeys.Add((DbForeignKey)schemaObject);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Example #7
0
        public TongJi()
        {
            Triggers.Add(GameEvent.PlayerCanBeTargeted, new RelayTrigger(
                (p, e, a) =>
                {
                    return a.Source != p && (a.Card.Type is Sha) && p.HandCards().Count > p.Health && !a.Targets.Contains(p) && Game.CurrentGame.DistanceTo(a.Source, p) <= a.Source[Player.AttackRange] + 1;
                },
                (p, e, a) =>
                {
                    throw new TriggerResultException(TriggerResult.Fail);
                },
                TriggerCondition.Global
                ));
            IsEnforced = true;

            var notifier2 = new AutoNotifyPassiveSkillTrigger(
                this,
                (p, e, a) => { return a.Source != p && (a.Card.Type is Sha) && p.HandCards().Count > p.Health && a.Targets.Contains(p) && Game.CurrentGame.DistanceTo(a.Source, p) <= a.Source[Player.AttackRange] + 1; },
                (p, e, a) => { },
                TriggerCondition.Global
            );

            Triggers.Add(GameEvent.CardUsageTargetConfirmed, notifier2);
        }
Example #8
0
        public ZhuiKong()
        {
            var trigger = new AutoNotifyPassiveSkillTrigger(
                this,
                (p, e, a) => { return(p != a.Source && p.LostHealth > 0 && p.HandCards().Count > 0 && a.Source.HandCards().Count > 0); },
                (p, e, a) =>
            {
                if (Game.CurrentGame.PinDian(p, a.Source, this) == true)
                {
                    Game.CurrentGame.PhasesSkipped.Add(TurnPhase.Play);
                }
                else
                {
                    Trigger tri = new ZhuiKongLose(a.Source, p);
                    Game.CurrentGame.RegisterTrigger(GameEvent.PlayerDistanceOverride, tri);
                    Game.CurrentGame.RegisterTrigger(GameEvent.PhasePostEnd, new ZhuiKongRemoval(a.Source, tri));
                }
            },
                TriggerCondition.Global
                );

            Triggers.Add(GameEvent.PhaseProceedEvents[TurnPhase.BeforeStart], trigger);
            IsAutoInvoked = null;
        }
Example #9
0
 public void CheckTrigger()
 {
     for (int i = 0; i < Manager.Count; i++)
     {
         for (int j = 1; j < Manager.Count; j++)
         {
             if (i != j)
             {
                 if (checkTwoTrigger(Manager[i], Manager[j]))
                 {
                     ///如果碰撞过
                     if (CheckOrTrigger(Manager[i], Manager[j]) != -1)
                     {
                     }
                     else
                     {
                         Trigger[] temp = new Trigger[2];
                         Manager[i].OnTrigger(Manager[j]);
                         Manager[j].OnTrigger(Manager[i]);
                         temp[0] = Manager[i];
                         temp[1] = Manager[j];
                         Triggers.Add(temp);
                     }
                 }
                 else
                 {
                     int index = CheckOrTrigger(Manager[i], Manager[j]);
                     if (index != -1)
                     {
                         Triggers.RemoveAt(index);
                     }
                 }
             }
         }
     }
 }
Example #10
0
            public DaHePassive()
            {
                var trigger = new AutoNotifyPassiveSkillTrigger(
                    this,
                    (p, e, a) =>
                {
                    return(DaHePlayer != null && a.Source == DaHePlayer && a.ReadonlyCard.Type is Shan && a.ReadonlyCard.Suit != SuitType.Heart);
                },
                    (p, e, a) => { throw new TriggerResultException(TriggerResult.End); },
                    TriggerCondition.Global
                    );
                var trigger2 = new AutoNotifyPassiveSkillTrigger(
                    this,
                    (p, e, a) => { DaHePlayer = null; },
                    TriggerCondition.Global
                    )
                {
                    IsAutoNotify = false
                };

                Triggers.Add(GameEvent.CardUsageTargetValidating, trigger);
                Triggers.Add(GameEvent.PhasePostEnd, trigger2);
                IsEnforced = true;
            }
Example #11
0
        public JuXiang()
        {
            var trigger = new AutoNotifyPassiveSkillTrigger(
                this,
                (p, e, a) => { return(a.ReadonlyCard.Type is NanManRuQin); },
                (p, e, a) => { throw new TriggerResultException(TriggerResult.End); },
                TriggerCondition.OwnerIsTarget
                )
            {
                Type = TriggerType.Skill
            };
            var trigger2 = new AutoNotifyPassiveSkillTrigger(
                this,
                Run,
                TriggerCondition.Global
                )
            {
                IsAutoNotify = false
            };

            Triggers.Add(GameEvent.CardUsageTargetValidating, trigger);
            Triggers.Add(GameEvent.CardsEnteringDiscardDeck, trigger2);
            IsEnforced = true;
        }
Example #12
0
        public DuoDao()
        {
            var trigger = new AutoNotifyUsagePassiveSkillTrigger(
                this,
                (p, e, a) => { return(p.HandCards().Count > 0 && a.Source != null && a.Source.Weapon() != null); },
                (p, e, a, cards, players) =>
            {
                Game.CurrentGame.HandleCardDiscard(p, cards);
                Game.CurrentGame.HandleCardTransferToHand(a.Source, p, new List <Card>()
                {
                    a.Source.Weapon()
                });
            },
                TriggerCondition.OwnerIsTarget,
                new DuoDaoVerifier()
                )
            {
                AskForConfirmation = false
            };

            Triggers.Add(GameEvent.AfterDamageInflicted, trigger);

            IsAutoInvoked = null;
        }
Example #13
0
        public KneeboardSwitch()
            : base("Kneeboard Switch", new System.Windows.Size(50, 100))
        {
            _positionOneImage   = "{Helios}/Images/Rockers/triangles-light-up.png";
            _positionTwoImage   = "{Helios}/Images/Rockers/triangles-light-norm.png";
            _positionThreeImage = "{Helios}/Images/Rockers/triangles-light-down.png";

            _positionValue          = new HeliosValue(this, new BindingValue((double)SwitchPosition), "", "position", "Current position of the switch.", "1,2,3 1 is top position", BindingValueUnits.Numeric);
            _positionValue.Execute += new HeliosActionHandler(SetPositionAction_Execute);


            _KneeboardPosition = new HeliosValue(this, new BindingValue(4), "", "Kneeboard position", "Current position of the KneeBoard.", "", BindingValueUnits.Numeric);

            _KneeboardPosition.Execute += new HeliosActionHandler(SetValue_Execute);
            _value = 0;
            _KneeboardPosition.SetValue(new BindingValue(4), BypassTriggers);

            Values.Add(_positionValue);
            Values.Add(_KneeboardPosition);
            Actions.Add(_positionValue);
            Actions.Add(_KneeboardPosition);
            Triggers.Add(_positionValue);
            Triggers.Add(_KneeboardPosition);
        }
Example #14
0
 private new void AddTrigger(IBindingTrigger trigger, string device)
 {
     trigger.Device = device;
     Triggers.Add(trigger);
 }
Example #15
0
 protected void AddTrigger(IBindingTrigger trigger, string device)
 {
     trigger.Device = device;
     Triggers.Add(trigger);
 }
Example #16
0
        public void Update(float timeSinceLastFrame)
        {
            for (int i = Triggers.Count - 1; i >= 0; i--)
            {
                if (Triggers.ElementAt(i).Value.delayTime > 0)
                {
                    Triggers.ElementAt(i).Value.CurrentDelay = Triggers.ElementAt(i).Value.delayTime;
                    triggerDelayQueue.Add(Triggers.ElementAt(i).Value);
                }
                else
                {
                    triggerExecuteQueue.Add(Triggers.ElementAt(i).Value);
                }
                Triggers.Remove(Triggers.ElementAt(i).Key);
            }

            for (int i = triggerDelayQueue.Count - 1; i >= 0; i--)
            {
                if (triggerDelayQueue[i].CurrentDelay > 0)
                {
                    triggerDelayQueue[i].CurrentDelay--;
                }
                else
                {
                    triggerExecuteQueue.Add(triggerDelayQueue[i]);
                    triggerDelayQueue.Remove(triggerDelayQueue[i]);
                }
            }

            for (int i = triggerExecuteQueue.Count - 1; i >= 0; i--)
            {
                BackgroundWorker worker = new BackgroundWorker();
                worker.DoWork += (o, e) =>
                {
                    int index = int.Parse(e.Argument.ToString());
                    triggerExecuteQueue[index].Execute(world);
                };
                worker.RunWorkerAsync(i);
            }

            for (int i = triggerForzenQueue.Count - 1; i >= 0; i--)
            {
                if (triggerForzenQueue[i].frozenTime == ScriptTrigger.TRIGGER_ONCE)
                {
                    continue;
                }

                if (triggerForzenQueue[i].frozenTime > 0)
                {
                    triggerForzenQueue[i].CurrentFrozen--;
                }
                else
                {
                    if (!Triggers.ContainsKey(triggerForzenQueue[i].Name))
                    {
                        Triggers.Add(triggerForzenQueue[i].Name, triggerForzenQueue[i]);
                    }
                    triggerForzenQueue.Remove(triggerForzenQueue[i]);
                }
            }
        }
Example #17
0
        public void CopyTrigger(Trigger source)
        {
            /*
             * MemoryStream stream = new MemoryStream();
             * System.Runtime.Serialization.Formatters.Binary.BinaryFormatter format = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
             * format.Serialize(stream, source);
             * Trigger copy = (CMissionLib.Trigger)format.Deserialize(stream);
             * copy.Name = copy.Name + " (Copy)";
             * Triggers.Add(copy);
             * RaisePropertyChanged(String.Empty);
             */
            string path = Path.GetTempFileName();

            using (var writer = XmlWriter.Create(path, new XmlWriterSettings {
                Indent = true, CheckCharacters = true
            })) new NetDataContractSerializer().WriteObject(writer, source);
            try
            {
                using (var stream = File.OpenRead(path))
                {
                    Trigger copy = (Trigger) new NetDataContractSerializer().ReadObject(stream);
                    copy.Name = copy.Name + " (Copy)";

                    // reconstruct object references
                    foreach (CreateUnitsAction action in copy.Actions.Where(x => x.GetType() == typeof(CreateUnitsAction)))
                    {
                        foreach (UnitStartInfo unit in action.Units)
                        {
                            unit.Player  = Players.First(x => x.Name == unit.Player.Name);
                            unit.UnitDef = Mod.UnitDefs.First(x => x.Name == unit.UnitDefName);
                        }
                    }
                    foreach (UnitsAreInAreaCondition condition in copy.Conditions.Where(x => x.GetType() == typeof(UnitsAreInAreaCondition)))
                    {
                        var players = condition.Players.Select(x => Players.First(p => p.Name == x.Name));
                        condition.Players = new ObservableCollection <Player>(players);
                    }
                    foreach (UnitCreatedCondition condition in copy.Conditions.Where(x => x.GetType() == typeof(UnitCreatedCondition)))
                    {
                        var players = condition.Players.Select(x => Players.First(p => p.Name == x.Name));
                        condition.Players = new ObservableCollection <Player>(players);
                    }
                    foreach (UnitFinishedCondition condition in copy.Conditions.Where(x => x.GetType() == typeof(UnitFinishedCondition)))
                    {
                        var players = condition.Players.Select(x => Players.First(p => p.Name == x.Name));
                        condition.Players = new ObservableCollection <Player>(players);
                    }
                    foreach (PlayerDiedCondition condition in copy.Conditions.Where(x => x.GetType() == typeof(PlayerDiedCondition)))
                    {
                        condition.Player = Players.First(p => p.Name == condition.Player.Name);
                    }
                    foreach (PlayerJoinedCondition condition in copy.Conditions.Where(x => x.GetType() == typeof(PlayerJoinedCondition)))
                    {
                        condition.Player = Players.First(p => p.Name == condition.Player.Name);
                    }
                    foreach (LockUnitsAction action in copy.Actions.Where(x => x.GetType() == typeof(LockUnitsAction)))
                    {
                        var players = action.Players.Select(x => Players.First(p => p.Name == x.Name));
                        action.Players = new ObservableCollection <Player>(players);
                    }
                    foreach (UnlockUnitsAction action in copy.Actions.Where(x => x.GetType() == typeof(UnlockUnitsAction)))
                    {
                        var players = action.Players.Select(x => Players.First(p => p.Name == x.Name));
                        action.Players = new ObservableCollection <Player>(players);
                    }

                    Triggers.Add(copy);
                    RaisePropertyChanged(String.Empty);
                }
                if (File.Exists(path))
                {
                    File.Delete(path);
                }
            }
            catch (Exception ex) {
                throw ex;
            }
        }
Example #18
0
        public LevelObject(LevelObjectPrefab prefab, Vector3 position, float scale, float rotation = 0.0f)
        {
            ActivePrefab = Prefab = prefab;
            Position     = position;
            Scale        = scale;
            Rotation     = rotation;
            Health       = prefab.Health;

            spriteIndex = ActivePrefab.Sprites.Any() ? Rand.Int(ActivePrefab.Sprites.Count, Rand.RandSync.Server) : -1;

            if (Sprite != null && prefab.SpriteSpecificPhysicsBodyElements.ContainsKey(Sprite))
            {
                PhysicsBody = new PhysicsBody(prefab.SpriteSpecificPhysicsBodyElements[Sprite], ConvertUnits.ToSimUnits(new Vector2(position.X, position.Y)), Scale);
            }
            else if (prefab.PhysicsBodyElement != null)
            {
                PhysicsBody = new PhysicsBody(prefab.PhysicsBodyElement, ConvertUnits.ToSimUnits(new Vector2(position.X, position.Y)), Scale);
            }

            if (PhysicsBody != null)
            {
                PhysicsBody.UserData = this;
                PhysicsBody.SetTransformIgnoreContacts(PhysicsBody.SimPosition, -Rotation);
                PhysicsBody.BodyType            = BodyType.Static;
                PhysicsBody.CollisionCategories = Physics.CollisionLevel;
                PhysicsBody.CollidesWith        = Prefab.TakeLevelWallDamage?
                                                  Physics.CollisionWall | Physics.CollisionCharacter | Physics.CollisionProjectile :
                                                  Physics.CollisionWall | Physics.CollisionCharacter;
            }

            foreach (XElement triggerElement in prefab.LevelTriggerElements)
            {
                Triggers ??= new List <LevelTrigger>();
                Vector2 triggerPosition = triggerElement.GetAttributeVector2("position", Vector2.Zero) * scale;

                if (rotation != 0.0f)
                {
                    var ca = (float)Math.Cos(rotation);
                    var sa = (float)Math.Sin(rotation);

                    triggerPosition = new Vector2(
                        ca * triggerPosition.X + sa * triggerPosition.Y,
                        -sa * triggerPosition.X + ca * triggerPosition.Y);
                }

                var newTrigger = new LevelTrigger(triggerElement, new Vector2(position.X, position.Y) + triggerPosition, -rotation, scale, prefab.Name);
                if (newTrigger.PhysicsBody != null)
                {
                    newTrigger.PhysicsBody.UserData = this;
                }
                int parentTriggerIndex = prefab.LevelTriggerElements.IndexOf(triggerElement.Parent);
                if (parentTriggerIndex > -1)
                {
                    newTrigger.ParentTrigger = Triggers[parentTriggerIndex];
                }
                Triggers.Add(newTrigger);
            }

            if (spriteIndex == -1)
            {
                foreach (var overrideProperties in prefab.OverrideProperties)
                {
                    if (overrideProperties == null)
                    {
                        continue;
                    }
                    if (overrideProperties.Sprites.Count > 0)
                    {
                        spriteIndex = Rand.Int(overrideProperties.Sprites.Count, Rand.RandSync.Server);
                        break;
                    }
                }
            }

            NeedsUpdate = NeedsNetworkSyncing || (Triggers != null && Triggers.Any()) || Prefab.PhysicsBodyTriggerIndex > -1;

            InitProjSpecific();
        }
Example #19
0
 public TI3Command()
 {
     Triggers.Add("!ti3");
     HelpText = "!ti3 - Countdown to Doters";
 }
 /// <summary>
 /// Short-hand method for adding a state change trigger.
 /// </summary>
 /// <param name="type">Type of trigger.</param>
 /// <param name="state">Visual state applied when the trigger occurs.</param>
 /// <param name="bounds">Bounds within which the trigger applies.</param>
 /// <param name="anchor">How the bounds are anchored to the control.</param>
 public void AddTrigger(VisualStateTriggerTypes type, TState state, Rectangle bounds = default(Rectangle), AnchorStyles anchor = AnchorStyles.Top | AnchorStyles.Left)
 {
     Triggers.Add(new VisualStateTrigger <TState>(type, state, bounds, anchor));
 }
Example #21
0
 public MakeSIDCommand()
 {
     Triggers.Add("!makesid");
     Triggers.Add("!makesteamid");
     HelpText = "!makesid <universe> <type> <instance> <id> - Crafts a SteamID with the given parameters, <id> can be a resolvable SteamID";
 }
Example #22
0
 public void AddTrigger(ITrigger trigger)
 {
     Triggers.Add(trigger);
 }
 public void AddTrigger(Trigger trigger)
 {
     Triggers.Add(trigger);
     UpdateBilling();
 }
Example #24
0
        public ZhaoLie()
        {
            var trigger = new AutoNotifyUsagePassiveSkillTrigger(
                this,
                (p, e, a) =>
            {
                return(Game.CurrentGame.AlivePlayers.Any(pl => Game.CurrentGame.DistanceTo(p, pl) <= p[Player.AttackRange] + 1 && pl != p));
            },
                (p, e, a, c, pls) =>
            {
                p[Player.DealAdjustment]--;
                ZhaoLieTarget = pls[0];
                ZhaoLieUsed   = true;
            },
                TriggerCondition.OwnerIsSource,
                new ZhaoLieVerifier()
                )
            {
                AskForConfirmation = false
            };

            Triggers.Add(GameEvent.PhaseProceedEvents[TurnPhase.Draw], trigger);

            var trigger2 = new AutoNotifyPassiveSkillTrigger(
                this,
                (p, e, a) => { return(ZhaoLieUsed && ZhaoLieTarget != null); },
                ZhaoLieProcess,
                TriggerCondition.OwnerIsSource
                )
            {
                AskForConfirmation = false, IsAutoNotify = false
            };

            Triggers.Add(GameEvent.PhaseEndEvents[TurnPhase.Draw], trigger2);

            var trigger3 = new AutoNotifyPassiveSkillTrigger(
                this,
                (p, e, a) => { return(ZhaoLieTarget != null && a.Targets.Contains(ZhaoLieTarget) && a.ReadonlyCard != null && a.ReadonlyCard[ZhaoLieDamage] != 0); },
                (p, e, a) => { a.ReadonlyCard[ZhaoLieDamage[ZhaoLieTarget]] = 1; },
                TriggerCondition.OwnerIsSource
                )
            {
                AskForConfirmation = false, IsAutoNotify = false, Priority = int.MinValue
            };

            Triggers.Add(GameEvent.DamageInflicted, trigger3);

            var trigger4 = new AutoNotifyPassiveSkillTrigger(
                this,
                (p, e, a) => { return(ZhaoLieTarget != null && a.ReadonlyCard != null && a.ReadonlyCard[ZhaoLieDamage[a.Targets[0]]] != 0); },
                (p, e, a) => { Game.CurrentGame.HandleCardTransferToHand(null, a.Targets[0], basicCards); ZhaoLieTarget = null; },
                TriggerCondition.OwnerIsSource
                )
            {
                AskForConfirmation = false, IsAutoNotify = false
            };

            Triggers.Add(GameEvent.DamageComputingFinished, trigger4);

            IsAutoInvoked = null;
        }
Example #25
0
        public DangXian()
        {
            var trigger = new AutoNotifyPassiveSkillTrigger(
                this,
                (p, e, a) =>
            {
                var saveP   = Game.CurrentGame.CurrentPlayer;
                var savePh  = Game.CurrentGame.CurrentPhase;
                var savePhI = Game.CurrentGame.CurrentPhaseEventIndex;

                Game.CurrentGame.CurrentPhaseEventIndex = 0;
                Game.CurrentGame.CurrentPhase           = TurnPhase.Play;
                do
                {
                    Player currentPlayer = Game.CurrentGame.CurrentPlayer;
                    GameEventArgs args   = new GameEventArgs()
                    {
                        Source = currentPlayer
                    };
                    Trace.TraceInformation("Main game loop running {0}:{1}", currentPlayer.Id, Game.CurrentGame.CurrentPhase);
                    try
                    {
                        var phaseEvent = Game.PhaseEvents[Game.CurrentGame.CurrentPhaseEventIndex];
                        if (phaseEvent.ContainsKey(Game.CurrentGame.CurrentPhase))
                        {
                            Game.CurrentGame.Emit(Game.PhaseEvents[Game.CurrentGame.CurrentPhaseEventIndex][Game.CurrentGame.CurrentPhase], args);
                        }
                    }
                    catch (TriggerResultException ex)
                    {
                        if (ex.Status == TriggerResult.End)
                        {
                        }
                    }

                    Game.CurrentGame.CurrentPhaseEventIndex++;
                    if (Game.CurrentGame.CurrentPhaseEventIndex >= Game.PhaseEvents.Length - 1 || currentPlayer.IsDead)
                    {
                        Game.CurrentGame.CurrentPhaseEventIndex = 0;
                        Game.CurrentGame.CurrentPhase++;
                        if ((int)Game.CurrentGame.CurrentPhase >= Enum.GetValues(typeof(TurnPhase)).Length || (int)Game.CurrentGame.CurrentPhase < 0 || currentPlayer.IsDead)
                        {
                            break;
                        }
                    }
                } while (Game.CurrentGame.CurrentPhaseEventIndex < 3 && Game.CurrentGame.CurrentPhase == TurnPhase.Play);


                Game.CurrentGame.CurrentPlayer          = saveP;
                Game.CurrentGame.CurrentPhase           = savePh;
                Game.CurrentGame.CurrentPhaseEventIndex = savePhI;
            },
                TriggerCondition.OwnerIsSource
                )
            {
                AskForConfirmation = false
            };

            Triggers.Add(GameEvent.PhaseProceedEvents[TurnPhase.BeforeStart], trigger);
            IsEnforced = true;
        }
Example #26
0
 public JobConfigurator AddTrigger(Func <ITrigger> jobTrigger)
 {
     Triggers.Add(jobTrigger);
     return(this);
 }
Example #27
0
 public OnSummonDestroy(Card card)
 {
     Card = card;
     AreaOfEffects.Add(Controller.Field);
     Triggers.Add(GameEvents.Deploy);
 }
Example #28
0
 public TI5Command()
 {
     Triggers.Add("!ti5");
     HelpText = "!ti5 - Countdown to Doters";
 }
Example #29
0
        public AnXian()
        {
            var trigger = new AutoNotifyPassiveSkillTrigger(
                this,
                (p, e, a) => { return(a.ReadonlyCard != null && a.ReadonlyCard.Type is Sha); },
                (p, e, a) =>
            {
                while (true)
                {
                    if (a.Targets[0].HandCards().Count == 0)
                    {
                        break;
                    }
                    Game.CurrentGame.ForcePlayerDiscard(a.Targets[0], (pl, d) => { return(1 - d); }, false);
                    Game.CurrentGame.DrawCards(p, 1);
                    break;
                }
                throw new TriggerResultException(TriggerResult.End);
            },
                TriggerCondition.OwnerIsSource
                );

            Triggers.Add(GameEvent.DamageCaused, trigger);

            var trigger2 = new AutoNotifyPassiveSkillTrigger(
                this,
                (p, e, a) => { return(a.ReadonlyCard != null && a.ReadonlyCard.Type is Sha); },
                (p, e, a) =>
            {
                ISkill skill;
                List <Card> cards;
                List <Player> players;
                if (p.AskForCardUsage(new CardUsagePrompt("AnXian"), new AnXianVerifier(), out skill, out cards, out players))
                {
                    NotifySkillUse();
                    Game.CurrentGame.HandleCardDiscard(p, cards);
                    a.ReadonlyCard[AnXianSha[p]] = 1;
                    Game.CurrentGame.DrawCards(a.Source, 1);
                }
            },
                TriggerCondition.OwnerIsTarget
                )
            {
                AskForConfirmation = false, IsAutoNotify = false
            };

            Triggers.Add(GameEvent.CardUsageTargetConfirming, trigger2);

            var trigger3 = new AutoNotifyPassiveSkillTrigger(
                this,
                (p, e, a) => { return(a.ReadonlyCard != null && a.ReadonlyCard[AnXianSha[p]] != 0); },
                (p, e, a) => { throw new TriggerResultException(TriggerResult.End); },
                TriggerCondition.OwnerIsTarget
                )
            {
                AskForConfirmation = false, IsAutoNotify = false
            };

            Triggers.Add(GameEvent.CardUsageTargetValidating, trigger3);
            IsAutoInvoked = null;
        }
Example #30
0
 public TI4Command()
 {
     Triggers.Add("!ti4");
     HelpText = "!ti4 - Countdown to Doters";
 }