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); }
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()); }
public AquaShooter() : base("Aqua Shooter", 4, Civilization.Water, 2000, Subtype.LiquidPeople) { Abilities.Add(new BlockerAbility()); }
public GrayBalloonShadowOfGreed() : base("Gray Balloon, Shadow of Greed", 3, Civilization.Darkness, 3000, Subtype.Ghost) { Abilities.Add(new BlockerAbility()); Abilities.Add(new CannotAttackPlayersAbility()); }
public EmeraldGrass() : base("Emerald Grass", 2, Civilization.Light, 3000, Subtype.StarlightTree) { Abilities.Add(new BlockerAbility()); Abilities.Add(new CannotAttackPlayersAbility()); }
public void AddAbility(Ability ability) { Abilities.Add(ability); }
public SaucerHeadShark() : base("Saucer-Head Shark", 5, Civilization.Water, 3000, Subtype.GelFish) { Abilities.Add(new WhenYouPutThisCreatureIntoTheBattleZoneAbility(new ReturnCreaturesToTheirOwnersHandsResolvable(new CreaturesWithMaxPowerFilter(2000)))); }
/// <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); }
public UnicornFish() : base("Unicorn Fish", 4, Civilization.Water, 1000, Subtype.Fish) { Abilities.Add(new WhenYouPutThisCreatureIntoTheBattleZoneAbility(new AquaSurferResolvable(1))); }
public AquaSurfer() : base("Aqua Surfer", 6, DuelMastersModels.Civilization.Water, 2000, DuelMastersModels.Subtype.LiquidPeople) { ShieldTrigger = true; Abilities.Add(new WhenYouPutThisCreatureIntoTheBattleZoneAbility(new AquaSurferResolvable(1))); }
public Magmarex() : base("Magmarex", 5, Civilization.Fire, 3000, Subtype.RockBeast) { ShieldTrigger = true; Abilities.Add(new WhenYouPutThisCreatureIntoTheBattleZoneAbility(new DestroyCreaturesResolvable(new CreaturesWithPowerFilter(1000)))); }
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)))); }
public override void InitAbilities() { base.InitAbilities(); Abilities.Add(new GermanySupply()); }
public Soulswap() : base("Soulswap", 3, Civilization.Nature) { ShieldTrigger = true; Abilities.Add(new SpellAbility(new SoulswapResolvable())); }
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()); }
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()); }
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(); } }