Ability AddAbilityFromJSON(JToken ability)
        {
            if (ability.SelectToken("id") == null)
            {
                return(null);
            }

            if (Abilities.ContainsKey(ability.SelectToken("id").ToObject <int>()))
            {
                return(Abilities[ability.SelectToken("id").ToObject <int>()]);
            }

            Ability a = new Ability();

            if (ability.SelectToken("id") != null)
            {
                a.ID = ability.SelectToken("id").ToObject <int>();
            }

            if (ability.SelectToken("name") != null)
            {
                a.Name = ability.SelectToken("name").ToObject <string>();
            }

            if (ability.SelectToken("shortDescription") != null)
            {
                a.Description = ability.SelectToken("shortDescription").ToObject <string>();
            }

            if (ability.SelectToken("activationType") != null)
            {
                a.ActivationType = ability.SelectToken("activationType").ToObject <int>();
            }

            if (ability.SelectToken("noraCost") != null)
            {
                a.NoraCost = ability.SelectToken("noraCost").ToObject <int>();
            }

            if (ability.SelectToken("apCost") != null)
            {
                a.APCost = ability.SelectToken("apCost").ToObject <int>();
            }

            if (ability.SelectToken("level") != null)
            {
                a.Level = ability.SelectToken("level").ToObject <int>();
            }

            if (ability.SelectToken("cooldown") != null)
            {
                a.Cooldown = ability.SelectToken("cooldown").ToObject <int>();
            }

            if (ability.SelectToken("iconName") != null)
            {
                a.IconName = ability.SelectToken("iconName").ToObject <string>();
            }

            a.Description = ExtractAbilitiesAndConditions(a.Description, ref a.DescriptionAbilities, ref a.DescriptionConditions);

            Abilities.Add(a.ID, a);
            AbilityNames.AllowedStrings.Add(a.ToString());
            return(a);
        }
Beispiel #2
0
 public VolcanicArrows() : base("Volcanic Arrows", 2, Civilization.Fire)
 {
     ShieldTrigger = true;
     Abilities.Add(new SpellAbility(new DestroyOpponentsCreatureResolvable(new CreaturesWithMaxPowerFilter(6000))));
     Abilities.Add(new SpellAbility(new PutOwnShieldToGraveyardResolvable()));
 }
 public CrimsonHammer() : base("Crimson Hammer", 2, Civilization.Fire)
 {
     Abilities.Add(new SpellAbility(new DestroyOpponentsCreatureResolvable(new CreaturesWithMaxPowerFilter(2000))));
 }
 public AstrocometDragon() : base("Astrocomet Dragon", 7, Civilization.Fire, 6000, Subtype.ArmoredDragon)
 {
     Abilities.Add(new PowerAttackerAbility(4000));
     Abilities.Add(new DoubleBreakerAbility());
 }
 public RevolverFish() : base("Revolver Fish", 4, Civilization.Water, 5000, Subtype.GelFish)
 {
     Abilities.Add(new BlockerAbility());
     Abilities.Add(new CannotAttackCreaturesAbility());
     Abilities.Add(new CannotAttackPlayersAbility());
 }
Beispiel #6
0
 public AquaShooter() : base("Aqua Shooter", 4, Civilization.Water, 2000, Subtype.LiquidPeople)
 {
     Abilities.Add(new BlockerAbility());
 }
Beispiel #7
0
 public GrayBalloonShadowOfGreed() : base("Gray Balloon, Shadow of Greed", 3, Civilization.Darkness, 3000, Subtype.Ghost)
 {
     Abilities.Add(new BlockerAbility());
     Abilities.Add(new CannotAttackPlayersAbility());
 }
Beispiel #8
0
 public EmeraldGrass() : base("Emerald Grass", 2, Civilization.Light, 3000, Subtype.StarlightTree)
 {
     Abilities.Add(new BlockerAbility());
     Abilities.Add(new CannotAttackPlayersAbility());
 }
Beispiel #9
0
 public void AddAbility(Ability ability)
 {
     Abilities.Add(ability);
 }
Beispiel #10
0
 public SaucerHeadShark() : base("Saucer-Head Shark", 5, Civilization.Water, 3000, Subtype.GelFish)
 {
     Abilities.Add(new WhenYouPutThisCreatureIntoTheBattleZoneAbility(new ReturnCreaturesToTheirOwnersHandsResolvable(new CreaturesWithMaxPowerFilter(2000))));
 }
Beispiel #11
0
 /// <summary>
 /// Adds an ability.
 /// </summary>
 /// <param name="ability">The ability to add.</param>
 public void Can(IAbility ability)
 {
     Logger.Info($"Adding ability for {this} to {ability}");
     Abilities.Add(ability.GetType(), ability);
 }
Beispiel #12
0
 public UnicornFish() : base("Unicorn Fish", 4, Civilization.Water, 1000, Subtype.Fish)
 {
     Abilities.Add(new WhenYouPutThisCreatureIntoTheBattleZoneAbility(new AquaSurferResolvable(1)));
 }
Beispiel #13
0
 public AquaSurfer() : base("Aqua Surfer", 6, DuelMastersModels.Civilization.Water, 2000, DuelMastersModels.Subtype.LiquidPeople)
 {
     ShieldTrigger = true;
     Abilities.Add(new WhenYouPutThisCreatureIntoTheBattleZoneAbility(new AquaSurferResolvable(1)));
 }
Beispiel #14
0
 public Magmarex() : base("Magmarex", 5, Civilization.Fire, 3000, Subtype.RockBeast)
 {
     ShieldTrigger = true;
     Abilities.Add(new WhenYouPutThisCreatureIntoTheBattleZoneAbility(new DestroyCreaturesResolvable(new CreaturesWithPowerFilter(1000))));
 }
Beispiel #15
0
 public AquaHulcus() : base("Aqua Hulcus", 3, Civilization.Water, 2000, Subtype.LiquidPeople)
 {
     Abilities.Add(new WhenYouPutThisCreatureIntoTheBattleZoneAbility(new ControllerMayDrawCardsResolvable(1)));
 }
 public PhantomDragonsFlame() : base("Phantom Dragon's Flame", 3, Civilization.Fire)
 {
     ShieldTrigger = true;
     Abilities.Add(new SpellAbility(new DestroyOpponentsCreatureResolvable(new CreaturesWithMaxPowerFilter(2000))));
 }
Beispiel #17
0
        public override void InitAbilities()
        {
            base.InitAbilities();

            Abilities.Add(new GermanySupply());
        }
Beispiel #18
0
 public Soulswap() : base("Soulswap", 3, Civilization.Nature)
 {
     ShieldTrigger = true;
     Abilities.Add(new SpellAbility(new SoulswapResolvable()));
 }
Beispiel #19
0
 public ExplosiveFighterUcarn() : base("Explosive Fighter Ucarn", 5, Civilization.Fire, 9000, Subtype.Dragonoid)
 {
     Abilities.Add(new WhenYouPutThisCreatureIntoTheBattleZoneAbility(new PutCardsFromManaZoneIntoGraveyardResolvable(2, 2, ZoneOwner.Controller)));
     Abilities.Add(new DoubleBreakerAbility());
 }
Beispiel #20
0
 public MarineFlower() : base("Marine Flower", 1, Civilization.Water, 2000, Subtype.CyberVirus)
 {
     Abilities.Add(new BlockerAbility());
     Abilities.Add(new CannotAttackCreaturesAbility());
     Abilities.Add(new CannotAttackPlayersAbility());
 }
 public TidePatroller() : base("Tide Patroller", 4, Civilization.Water, 2000, Subtype.Merfolk)
 {
     Abilities.Add(new BlockerAbility());
 }
 public ZagaanKnightOfDarkness() : base("Zagaan, Knight of Darkness", 6, Civilization.Darkness, 7000, Subtype.DemonCommand)
 {
     Abilities.Add(new DoubleBreakerAbility());
 }
Beispiel #23
0
 public SniperMosquito() : base("Sniper Mosquito", 1, Civilization.Nature, 2000, Subtype.GiantInsect)
 {
     Abilities.Add(new WheneverThisCreatureAttacksAbility(new SniperMosquitoResolvable()));
 }
 public GranGureSpaceGuardian() : base("Gran Gure, Space Guardian", 6, Civilization.Light, 9000, Subtype.Guardian)
 {
     Abilities.Add(new BlockerAbility());
     Abilities.Add(new CannotAttackPlayersAbility());
 }
 public SenatineJadeTree() : base("Senatine Jade Tree", 3, Civilization.Light, 4000, Subtype.StarlightTree)
 {
     Abilities.Add(new BlockerAbility());
     Abilities.Add(new CannotAttackPlayersAbility());
 }
 public WanderingBraineater() : base("Wandering Braineater", 2, Civilization.Darkness, 2000, Subtype.LivingDead)
 {
     Abilities.Add(new BlockerAbility());
     Abilities.Add(new CannotAttackCreaturesAbility());
     Abilities.Add(new CannotAttackPlayersAbility());
 }
 public KingRippedHide() : base("King Ripped-Hide", 7, DuelMastersModels.Civilization.Water, 5000, DuelMastersModels.Subtype.Leviathan)
 {
     Abilities.Add(new WhenYouPutThisCreatureIntoTheBattleZoneAbility(new ControllerMayDrawCardsResolvable(2)));
 }
        public TypeCreature(XmlNode n) : base(n)
        {
            KindCreature            = FormMain.Config.FindKindCreature(XmlUtils.GetStringNotNull(n.SelectSingleNode("KindCreature")));
            MaxLevel                = XmlUtils.GetInteger(n.SelectSingleNode("MaxLevel"));
            DefaultPositionPriority = XmlUtils.GetInteger(n.SelectSingleNode("DefaultPositionPriority"));
            Reward         = XmlUtils.GetInteger(n.SelectSingleNode("Reward"));
            QuantityArrows = XmlUtils.GetInteger(n.SelectSingleNode("QuantityArrows"));
            DamageToCastle = XmlUtils.GetInteger(n.SelectSingleNode("DamageToCastle"));

            if (n.SelectSingleNode("PersistentState") != null)
            {
                PersistentStateHeroAtMap = FormMain.Config.FindStateCreature(XmlUtils.GetStringNotNull(n.SelectSingleNode("PersistentState")));
            }
            else
            {
                PersistentStateHeroAtMap = FormMain.Config.FindStateCreature(NameStateCreature.Nothing.ToString());
            }

            Debug.Assert(MaxLevel >= 1);
            Debug.Assert(MaxLevel <= 100);
            Debug.Assert(DefaultPositionPriority >= 0);
            Debug.Assert(DefaultPositionPriority <= 1000);
            Debug.Assert(Reward >= 0);
            Debug.Assert(Reward <= 1000);
            Debug.Assert(DamageToCastle >= 0);

            // Загружаем основные параметры
            if (n.SelectSingleNode("BaseParameters") != null)
            {
                ParametersByHire = new HeroParameters(n.SelectSingleNode("BaseParameters"));

                //
                if (n.SelectSingleNode("NextLevel") != null)
                {
                    ConfigNextLevel = new ConfigNextLevelHero(n.SelectSingleNode("NextLevel"));
                }
            }

            // Загружаем дефолтные способности
            XmlNode na = n.SelectSingleNode("Abilities");

            if (na != null)
            {
                Ability a;

                foreach (XmlNode l in na.SelectNodes("Ability"))
                {
                    a = FormMain.Config.FindAbility(l.InnerText);

                    // Проверяем, что такая способность не повторяется
                    foreach (Ability a2 in Abilities)
                    {
                        if (a.ID == a2.ID)
                        {
                            throw new Exception("Способность " + a.ID + " повторяется в списке способностей героя.");
                        }
                    }

                    Abilities.Add(a);
                }
            }

            // Загружаем дефолтное оружие и доспехи
            nameMeleeWeapon = XmlUtils.GetString(n.SelectSingleNode("MeleeWeapon"));
            nameRangeWeapon = XmlUtils.GetString(n.SelectSingleNode("RangeWeapon"));
            nameArmour      = XmlUtils.GetString(n.SelectSingleNode("Armour"));

            //Debug.Assert(nameMeleeWeapon != "");
            //Debug.Assert(nameArmour != "");

            if (nameRangeWeapon.Length > 0)
            {
                Debug.Assert(QuantityArrows > 0);
            }
            else
            {
                Debug.Assert(QuantityArrows == 0);
            }
        }
 public DeathligerLionOfChaos() : base("Deathliger, Lion of Chaos", 7, Civilization.Darkness, 9000, Subtype.DemonCommand)
 {
     Abilities.Add(new DoubleBreakerAbility());
 }
        void ParseFromJSON(string json)
        {
            try
            {
                json_main = JObject.Parse(json);
            }
            catch (Exception)
            {
                loading = false;
                Log.Error(Log.LogSource.PoxDB, "Database.ParseFromJSON(): Input JSON is invalid!");
                return;
            }

            ready = true;

            try
            {
                JToken champs = json_main.SelectToken("champs");
                foreach (JToken champ in champs.Children())
                {
                    AddChampionFromJSON(champ);
                }

                JToken spells = json_main.SelectToken("spells");
                foreach (JToken spell in spells.Children())
                {
                    AddSpellFromJSON(spell);
                }

                JToken relics = json_main.SelectToken("relics");
                foreach (JToken relic in relics.Children())
                {
                    AddRelicFromJSON(relic);
                }

                JToken equips = json_main.SelectToken("equips");
                foreach (JToken equip in equips.Children())
                {
                    AddEquipmentFromJSON(equip);
                }

                foreach (Champion c in Champions.Values)
                {
                    SetupChampionAbilities(c);
                }

                Abilities.Add(0, new Ability()
                {
                    Name = "<INVALID_ABILITY>"
                });

                ResolveSimilarAbilities();

                Log.Info(Log.LogSource.PoxDB, "Champs loaded: " + Champions.Count + ", Abilities loaded: " + Abilities.Count + ", Spells loaded: " + Spells.Count + ", Relics loaded: " + Relics.Count + ", Equipments loaded: " + Equipments.Count);
            }
            catch (Exception e)
            {
                Log.Error(Log.LogSource.PoxDB, "Database.RetrieveJSON_completed(): Error while parsing the JSON");
                Unload();
                ready = false;     // for posterity
                return;
            }
            finally
            {
                loading   = false;
                json_main = null;
            }

            ready = true;
            if (ready_trigger != null)
            {
                ready_trigger();
            }
        }