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); }
/// <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); }