Example #1
0
        public override void DumpCondition(LuaTextWriter output)
        {
            if (Inverted)
            {
                output.Write("not (");
            }

            output.Write(Count.ToString());
            output.Write(" <= #filter(ipairs(character.ClassLevels),\n");
            output.WriteStartFunction("class, level");
            if (Any)
            {
                output.Write("return true\n");
            }
            else
            {
                output.Write("return ");

                var conditions = RequiredClassLevels.Select(t => $"class == \"{t.Key}\" and level >= {t.Value}").Concat(
                    RequiredSpellCastingLevels.Select(t => $"GetSpellCastingType(class) == \"{t.Key}\" and level >= {t.Value}")).Concat(
                    RequiredClassTypeLevels.Select(t => $"ClassIsType(class, \"{t.Key}\") and level >= {t.Value}"));

                output.Write(string.Join(" or ", conditions.Select(c => $"({c})")));
                output.WriteLine();
            }
            output.WriteEndFunction();
            output.Write(")");

            if (Inverted)
            {
                output.Write(")");
            }
        }
Example #2
0
 public virtual void Dump(LuaTextWriter output)
 {
     output.WriteStartFunction("character");
     output.Write("return ");
     DumpCondition(output);
     output.WriteLine();
     output.WriteEndFunction();
 }
 protected override void DumpMembers(LuaTextWriter output)
 {
     base.DumpMembers(output);
     output.WriteKey("Condition");
     output.Write("=");
     output.WriteStartFunction("character");
     output.Write("return ");
     output.Write(Condition);
     output.Write("\n");
     output.WriteEndFunction();
     output.Write(",\n");
 }
Example #4
0
 protected override void DumpMembers(LuaTextWriter output)
 {
     base.DumpMembers(output);
     output.Write("Apply=");
     output.WriteStartFunction("kit");
     foreach (var line in _lines)
     {
         line.Dump(output);
     }
     output.WriteEndFunction();
     output.Write(",\n");
 }
 public override void DumpCondition(LuaTextWriter output)
 {
     if (InvertCampaignCondition)
     {
         output.Write("not ");
     }
     output.Write("any(sources, ");
     output.WriteStartFunction("source");
     output.Write("return ");
     base.DumpCondition(output);
     output.Write("\n");
     output.WriteEndFunction();
     output.Write(")");
 }
Example #6
0
        public override void Dump(LuaTextWriter output)
        {
            output.WriteStartFunction("character");
            output.Write("local count = 0\n");
            output.Write("local subCondition\n");
            foreach (var condition in Conditions)
            {
                output.Write("subCondition = ");
                condition.Dump(output);
                output.Write("\n");
                output.Write("if subCondition(character) then\n");
                output.Write("  count = count + 1\n");
                output.Write("end\n");
            }

            output.Write($"return count >= {Count}\n");
            output.WriteEndFunction();
        }
        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(")");
            }
        }