public override void DumpCondition(LuaTextWriter output) { if (Inverted) { output.Write("not ("); } void WriteFilter() { output.WriteStartFunction("ability"); output.Write("if ability.Category ~= "); output.WriteValue(Category); output.Write(" then return false end\n"); if (NotTypes.Any()) { output.Write("if ability.IsAnyType("); output.WriteValues(NotTypes); output.Write(") then return false end\n"); } foreach (var name in NotNames) { output.Write("if ability.Name == "); output.WriteValue(name); output.Write(" then return false end\n"); } if (Types.Any()) { output.Write("if ability.IsAnyType("); output.WriteValues(Types); output.Write(") then return true end\n"); } foreach (var name in Names) { output.Write("if ability.Name == "); output.WriteValue(name); output.Write(" then return true end\n"); } output.Write("return false\n"); output.WriteEndFunction(); } if (Count == 1) { output.Write("character.HasAnyAbility("); WriteFilter(); output.Write(")"); } else { output.Write(Count.ToString()); output.Write(" <= character.CountAbilities("); WriteFilter(); output.Write(")"); } if (Inverted) { output.Write(")"); } }