Пример #1
0
        public override OrderedDictionary Vector()
        {
            OrderedDictionary v = base.Vector();

            v.Add($"{Prefix()}Armor", Armor);
            v.Add($"{Prefix()}AttackDamage", AttackDamage);
            v.Add($"{Prefix()}BaseHealth", BaseHealth);
            v.Add($"{Prefix()}CantAttack", Convert.ToInt32(CantAttack));
            v.Add($"{Prefix()}CantAttackHeroes", Convert.ToInt32(CantAttackHeroes));
            v.Add($"{Prefix()}CantBeTargetedByOpponents", Convert.ToInt32(CantBeTargetedByOpponents));
            v.Add($"{Prefix()}CantBeTargetedBySpells", Convert.ToInt32(CantBeTargetedBySpells));
            v.Add($"{Prefix()}Damage", Damage);
            v.Add($"{Prefix()}HasAnyValidAttackTargets", Convert.ToInt32(HasAnyValidAttackTargets));
            v.Add($"{Prefix()}HasStealth", Convert.ToInt32(HasStealth));
            v.Add($"{Prefix()}HasTaunt", Convert.ToInt32(HasTaunt));
            v.Add($"{Prefix()}HasWindfury", Convert.ToInt32(HasWindfury));
            v.Add($"{Prefix()}Health", Health);
            v.Add($"{Prefix()}IsAttacking", Convert.ToInt32(IsAttacking));
            v.Add($"{Prefix()}IsDead", Convert.ToInt32(IsDead));
            v.Add($"{Prefix()}IsDefending", Convert.ToInt32(IsDefending));
            v.Add($"{Prefix()}IsFrozen", Convert.ToInt32(IsFrozen));
            v.Add($"{Prefix()}IsImmune", Convert.ToInt32(IsImmune));
            v.Add($"{Prefix()}IsSilenced", Convert.ToInt32(IsSilenced));
            //v.Add($"{Prefix()}_modifiedATK", _modifiedATK != null ? (int)_modifiedATK : 0);
            //v.Add($"{Prefix()}_modifiedCantBeTargetedBySpells", _modifiedCantBeTargetedBySpells != null ? Convert.ToInt32((bool)_modifiedCantBeTargetedBySpells) : 0);
            //v.Add($"{Prefix()}_modifiedHealth", _modifiedHealth != null ? (int)_modifiedHealth : 0);
            //v.Add($"{Prefix()}_modifiedImmune", _modifiedImmune != null ? Convert.ToInt32((bool)_modifiedImmune) : 0);
            //v.Add($"{Prefix()}_modifiedStealth", _modifiedStealth != null ? Convert.ToInt32((bool)_modifiedStealth) : 0);
            //v.Add($"{Prefix()}_modifiedTaunt", _modifiedTaunt != null ? Convert.ToInt32((bool)_modifiedTaunt) : 0);
            v.Add($"{Prefix()}NumAttacksThisTurn", NumAttacksThisTurn);
            try { v.Add($"{Prefix()}PreDamage", PreDamage); } catch { v.Add($"{Prefix()}PreDamage", 0); }
            v.Add($"{Prefix()}ValidAttackTargets", ValidAttackTargets.ToList().Count);

            return(v);
        }
Пример #2
0
        /// <summary>
        /// Indicates if the provided character can be attacked by this character.
        /// </summary>
        /// <param name="target"></param>
        /// <returns></returns>
        public virtual bool IsValidAttackTarget(ICharacter target)
        {
            // got target but isn't contained in valid targets
            if (!ValidAttackTargets.Contains(target))
            {
                Game.Log(LogLevel.WARNING, BlockType.ACTION, "Character", !Game.Logging? "":$"{this} has an invalid target {target}.");
                return(false);
            }

            var hero = target as Hero;

            if (CantAttackHeroes && (hero != null))
            {
                Game.Log(LogLevel.WARNING, BlockType.ACTION, "Character", !Game.Logging? "":$"Can't attack Heroes!");
                return(false);
            }

            return(true);
        }