From 30a450d87ded37708aff922acaa5db19f1d5cc3a Mon Sep 17 00:00:00 2001 From: "Johnny C. Lam" Date: Mon, 21 Apr 2014 05:03:35 +0000 Subject: [PATCH] Add Lua program to generate Ovale scripts from SimC profiles. This program reads the hard-coded directory containing SimC profiles and outputs the scripts to a "profiles" subdirectory in the current directory. git-svn-id: svn://svn.curseforge.net/wow/ovale/mainline/trunk@1314 d5049fe3-3747-40f7-a4b5-f36d6801af5f --- OvaleSimulationCraft.lua | 6 +++++- generate.lua | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 generate.lua diff --git a/OvaleSimulationCraft.lua b/OvaleSimulationCraft.lua index f8dba14..1542a8c 100644 --- a/OvaleSimulationCraft.lua +++ b/OvaleSimulationCraft.lua @@ -481,7 +481,7 @@ do if needAnd then tinsert(scriptLine, "and") end - tinsert(scriptLine, "BuffStacks(pet_frenzy any=1) == 5") + tinsert(scriptLine, "pet.BuffStacks(pet_frenzy_buff any=1) == 5") needAnd = true end if action == "stance" and scriptLine.choose then @@ -632,6 +632,10 @@ do ["^buff%.wild_mushroom%.stack$"] = "WildMushroomCount()", -- Hunter ["^debuff%.ranged_vulnerability%.up$"] = "target.DebuffPresent(ranged_vulnerability any=1)", + ["^buff%.beast_cleave$.down$"] = function(simc, action) + tinsert(simc.symbols, "pet_beast_cleave_buff") + return "pet.BuffExpires(pet_beast_cleave_buff any=1)" + end, -- Mage ["^buff%.arcane_charge%.stack$"] = function(simc, action) tinsert(simc.symbols, "arcane_charge_debuff") diff --git a/generate.lua b/generate.lua new file mode 100644 index 0000000..c3dafdc --- /dev/null +++ b/generate.lua @@ -0,0 +1,37 @@ +do + dofile("WoWAPI.lua") + + Ovale = {} + LoadAddonFile("OvaleLexer.lua") + LoadAddonFile("OvaleSimulationCraft.lua") + local OvaleSimulationCraft = Ovale.OvaleSimulationCraft + + local profilesDirectory = "..\\SimulationCraft\\profiles\\Tier16H" + local outputDirectory = "profiles" + + local saveInput = io.input() + local saveOutput = io.output() + + local dir = io.popen("dir /b " .. profilesDirectory) + os.execute("mkdir " .. outputDirectory) + for filename in dir:lines() do + if string.match(filename, "^[A-Z]") then + local inputName = string.gsub(profilesDirectory, "\\", "/") .. "/" .. filename + io.input(inputName) + local simcStr = io.read("*all") + if not string.find(simcStr, "optimal_raid=") then + local simc = OvaleSimulationCraft(simcStr) + simc.simcComments = true + + local outputFileName = string.gsub(filename, ".simc", ".txt") + print("Generating " .. outputFileName) + local outputName = outputDirectory .. "/" .. outputFileName + io.output(outputName) + io.write(table.concat(simc:GenerateScript(), "\n")) + end + end + end + + io.input(saveInput) + io.output(saveOutput) +end \ No newline at end of file -- 1.7.9.5