|
|
@ -73,6 +73,46 @@
|
|
|
|
>
|
|
|
|
>
|
|
|
|
</trigger>
|
|
|
|
</trigger>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- learned spells triggers
|
|
|
|
|
|
|
|
<trigger
|
|
|
|
|
|
|
|
enabled="n"
|
|
|
|
|
|
|
|
name="learned"
|
|
|
|
|
|
|
|
match="{learned_start}"
|
|
|
|
|
|
|
|
script="enable_learned_triggers"
|
|
|
|
|
|
|
|
omit_from_output="y"
|
|
|
|
|
|
|
|
sequence="100"
|
|
|
|
|
|
|
|
group="learned"
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
</trigger>
|
|
|
|
|
|
|
|
<trigger
|
|
|
|
|
|
|
|
enabled="n"
|
|
|
|
|
|
|
|
match="^(?<name>\w[\s\w]+\w+)\s+(?<num>\d+)\s+(?<pct>\d+)%\s+([^\s]+)?\s+\d+$"
|
|
|
|
|
|
|
|
regexp="y"
|
|
|
|
|
|
|
|
script="learned_line"
|
|
|
|
|
|
|
|
sequence="100"
|
|
|
|
|
|
|
|
omit_from_output="y"
|
|
|
|
|
|
|
|
group="learned"
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
</trigger>
|
|
|
|
|
|
|
|
<trigger
|
|
|
|
|
|
|
|
enabled="n"
|
|
|
|
|
|
|
|
match="{learned_end}"
|
|
|
|
|
|
|
|
script="disable_learned_triggers"
|
|
|
|
|
|
|
|
omit_from_output="y"
|
|
|
|
|
|
|
|
sequence="100"
|
|
|
|
|
|
|
|
group="learned"
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
</trigger>
|
|
|
|
|
|
|
|
<trigger
|
|
|
|
|
|
|
|
enabled="n"
|
|
|
|
|
|
|
|
match="^.*$"
|
|
|
|
|
|
|
|
regexp="y"
|
|
|
|
|
|
|
|
sequence="110"
|
|
|
|
|
|
|
|
omit_from_output="y"
|
|
|
|
|
|
|
|
group="learned"
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
</trigger>
|
|
|
|
|
|
|
|
|
|
|
|
-- spell practice triggers
|
|
|
|
-- spell practice triggers
|
|
|
|
<trigger
|
|
|
|
<trigger
|
|
|
|
enabled="n"
|
|
|
|
enabled="n"
|
|
|
@ -119,7 +159,7 @@
|
|
|
|
regexp="y"
|
|
|
|
regexp="y"
|
|
|
|
sequence="110"
|
|
|
|
sequence="110"
|
|
|
|
omit_from_output="y"
|
|
|
|
omit_from_output="y"
|
|
|
|
group="practice111111111111111111111111111"
|
|
|
|
group="practice"
|
|
|
|
>
|
|
|
|
>
|
|
|
|
</trigger>
|
|
|
|
</trigger>
|
|
|
|
<trigger
|
|
|
|
<trigger
|
|
|
@ -175,6 +215,30 @@
|
|
|
|
sequence="100"
|
|
|
|
sequence="100"
|
|
|
|
>
|
|
|
|
>
|
|
|
|
</alias>
|
|
|
|
</alias>
|
|
|
|
|
|
|
|
<alias
|
|
|
|
|
|
|
|
match="^prs add (?<num>\d+)$"
|
|
|
|
|
|
|
|
enabled="y"
|
|
|
|
|
|
|
|
regexp="y"
|
|
|
|
|
|
|
|
script="add"
|
|
|
|
|
|
|
|
sequence="100"
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
</alias>
|
|
|
|
|
|
|
|
<alias
|
|
|
|
|
|
|
|
match="^prs add$"
|
|
|
|
|
|
|
|
enabled="y"
|
|
|
|
|
|
|
|
regexp="y"
|
|
|
|
|
|
|
|
script="list_additional"
|
|
|
|
|
|
|
|
sequence="100"
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
</alias>
|
|
|
|
|
|
|
|
<alias
|
|
|
|
|
|
|
|
match="^prs help$"
|
|
|
|
|
|
|
|
enabled="y"
|
|
|
|
|
|
|
|
regexp="y"
|
|
|
|
|
|
|
|
script="help"
|
|
|
|
|
|
|
|
sequence="100"
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
</alias>
|
|
|
|
</aliases>
|
|
|
|
</aliases>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Script -->
|
|
|
|
<!-- Script -->
|
|
|
@ -183,6 +247,8 @@
|
|
|
|
<script>
|
|
|
|
<script>
|
|
|
|
<![CDATA[
|
|
|
|
<![CDATA[
|
|
|
|
require "gmcphelper"
|
|
|
|
require "gmcphelper"
|
|
|
|
|
|
|
|
require "serialize"
|
|
|
|
|
|
|
|
require "tprint"
|
|
|
|
|
|
|
|
|
|
|
|
local char = {}
|
|
|
|
local char = {}
|
|
|
|
local spells = {} -- spell, mana, pct, num
|
|
|
|
local spells = {} -- spell, mana, pct, num
|
|
|
@ -194,15 +260,28 @@ local pracs_spent = 0
|
|
|
|
local spells_prac = 0
|
|
|
|
local spells_prac = 0
|
|
|
|
local spells_left = 0
|
|
|
|
local spells_left = 0
|
|
|
|
|
|
|
|
|
|
|
|
function note(msg)
|
|
|
|
local additional = nil
|
|
|
|
ColourNote("darkcyan", "", ">> ", "silver", "", msg)
|
|
|
|
local pvar = GetVariable("additional") or ""
|
|
|
|
|
|
|
|
if additional ~= "" then
|
|
|
|
|
|
|
|
additional = loadstring("return "..pvar)()
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function note(msg, color)
|
|
|
|
|
|
|
|
if not color then
|
|
|
|
|
|
|
|
color = "white"
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
ColourNote("darkcyan", "", ">> ", color, "", msg)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
function start(name, line, args)
|
|
|
|
function start(name, line, args)
|
|
|
|
limit = 85
|
|
|
|
limit = 85
|
|
|
|
spells = {}
|
|
|
|
spells = {}
|
|
|
|
if args.limit ~= "" then
|
|
|
|
if args.limit ~= "" then
|
|
|
|
|
|
|
|
note("Practice limit argument was submitted.")
|
|
|
|
limit = tonumber(args.limit)
|
|
|
|
limit = tonumber(args.limit)
|
|
|
|
|
|
|
|
if limit > 95 then
|
|
|
|
|
|
|
|
limit = 95
|
|
|
|
|
|
|
|
end
|
|
|
|
note("Practice limit temporarily set to "..limit.."%.")
|
|
|
|
note("Practice limit temporarily set to "..limit.."%.")
|
|
|
|
end
|
|
|
|
end
|
|
|
|
if not char.status or not char.status.state then
|
|
|
|
if not char.status or not char.status.state then
|
|
|
@ -215,14 +294,16 @@ function start(name, line, args)
|
|
|
|
return
|
|
|
|
return
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
note("Checking automatic skills and spellup spells...")
|
|
|
|
note("Checking automatic, desired, and additional skills/spells...")
|
|
|
|
EnableTrigger("start", true)
|
|
|
|
EnableTrigger("start", true)
|
|
|
|
|
|
|
|
|
|
|
|
SendNoEcho("echo {practice_spellup_start}")
|
|
|
|
SendNoEcho("echo {practice_spellup_start}")
|
|
|
|
SendNoEcho("spells spellup")
|
|
|
|
SendNoEcho("spells spellup")
|
|
|
|
|
|
|
|
SendNoEcho("skills spellup")
|
|
|
|
SendNoEcho("spells resist")
|
|
|
|
SendNoEcho("spells resist")
|
|
|
|
SendNoEcho("spells healing")
|
|
|
|
SendNoEcho("spells healing")
|
|
|
|
SendNoEcho("spells curative")
|
|
|
|
SendNoEcho("spells curative")
|
|
|
|
|
|
|
|
SendNoEcho("skills curative")
|
|
|
|
SendNoEcho("skills passive")
|
|
|
|
SendNoEcho("skills passive")
|
|
|
|
SendNoEcho("skills movement")
|
|
|
|
SendNoEcho("skills movement")
|
|
|
|
SendNoEcho("echo {practice_spellup_end}")
|
|
|
|
SendNoEcho("echo {practice_spellup_end}")
|
|
|
@ -264,7 +345,7 @@ function practice_spells()
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
function start_practice_all()
|
|
|
|
function start_practice_all()
|
|
|
|
note("Practicing automatic skills and spellup spells...")
|
|
|
|
note("Practicing automatic, desired, and additional skills/spells...")
|
|
|
|
EnableTrigger("next_blank_line", true)
|
|
|
|
EnableTrigger("next_blank_line", true)
|
|
|
|
pracs_cost = 0
|
|
|
|
pracs_cost = 0
|
|
|
|
pracs_spent = 0
|
|
|
|
pracs_spent = 0
|
|
|
@ -283,9 +364,9 @@ function end_practice_all()
|
|
|
|
end
|
|
|
|
end
|
|
|
|
note("Spent "..pracs_spent.." practices on "..spells_prac.." skills/spells.")
|
|
|
|
note("Spent "..pracs_spent.." practices on "..spells_prac.." skills/spells.")
|
|
|
|
if spells_left > 0 then
|
|
|
|
if spells_left > 0 then
|
|
|
|
note("Need "..pracs_cost.." practices for "..spells_left.." skills/spells.")
|
|
|
|
note("Need "..pracs_cost.." practices for "..spells_left.." skills/spells.", "orangered")
|
|
|
|
end
|
|
|
|
end
|
|
|
|
note("Done practicing automatic skills and spellup spells.")
|
|
|
|
note("Done practicing automatic, desired, and additional skills/spells.")
|
|
|
|
-- report practices needed, if necessary
|
|
|
|
-- report practices needed, if necessary
|
|
|
|
-- otherwise report practices spent on total spells
|
|
|
|
-- otherwise report practices spent on total spells
|
|
|
|
-- tl = gettriggerlist()
|
|
|
|
-- tl = gettriggerlist()
|
|
|
@ -303,6 +384,7 @@ end
|
|
|
|
function disable_practice_triggers()
|
|
|
|
function disable_practice_triggers()
|
|
|
|
EnableTriggerGroup("practice", false)
|
|
|
|
EnableTriggerGroup("practice", false)
|
|
|
|
EnableTrigger("next_blank_line", true)
|
|
|
|
EnableTrigger("next_blank_line", true)
|
|
|
|
|
|
|
|
|
|
|
|
practice_spells()
|
|
|
|
practice_spells()
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
@ -310,19 +392,70 @@ function enable_triggers()
|
|
|
|
EnableTriggerGroup("spellups", true)
|
|
|
|
EnableTriggerGroup("spellups", true)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function has_additional()
|
|
|
|
|
|
|
|
if not additional then
|
|
|
|
|
|
|
|
return false
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
for _, _ in pairs(additional) do
|
|
|
|
|
|
|
|
return true
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
return false
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
function disable_triggers()
|
|
|
|
function disable_triggers()
|
|
|
|
EnableTriggerGroup("spellups", false)
|
|
|
|
EnableTriggerGroup("spellups", false)
|
|
|
|
EnableTrigger("next_blank_line", true)
|
|
|
|
EnableTrigger("next_blank_line", true)
|
|
|
|
|
|
|
|
if has_additional() then
|
|
|
|
|
|
|
|
check_additional()
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
report()
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function report()
|
|
|
|
local sp = prac_count("spell")
|
|
|
|
local sp = prac_count("spell")
|
|
|
|
local sk = prac_count("skill")
|
|
|
|
local sk = prac_count("skill")
|
|
|
|
note("Found "..sk.." automatic skills and "..sp.." spellup spells less than "..limit.."% practiced.")
|
|
|
|
local ad = prac_count("additional")
|
|
|
|
if (sp + sk) > 0 then
|
|
|
|
note("Found "..sk.." automatic, "..sp.." desired, and "..ad.." additional skills/spells less than "..limit.."% practiced.")
|
|
|
|
|
|
|
|
if (sp + sk + ad) > 0 then
|
|
|
|
EnableTriggerGroup("practice_all", true)
|
|
|
|
EnableTriggerGroup("practice_all", true)
|
|
|
|
SendNoEcho("echo {start_practice_all}")
|
|
|
|
SendNoEcho("echo {start_practice_all}")
|
|
|
|
practice_spells()
|
|
|
|
practice_spells()
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function check_additional()
|
|
|
|
|
|
|
|
EnableTrigger("learned", true)
|
|
|
|
|
|
|
|
SendNoEcho("echo {learned_start}")
|
|
|
|
|
|
|
|
SendNoEcho("learned")
|
|
|
|
|
|
|
|
SendNoEcho("echo {learned_end}")
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function enable_learned_triggers()
|
|
|
|
|
|
|
|
EnableTriggerGroup("learned", true)
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function learned_line(name, line, args, styles)
|
|
|
|
|
|
|
|
if additional[args.name] or additional[args.num] then
|
|
|
|
|
|
|
|
if additional[args.num] then -- convert to spell name
|
|
|
|
|
|
|
|
additional[args.name] = args.num
|
|
|
|
|
|
|
|
additional[args.num] = nil
|
|
|
|
|
|
|
|
SaveState()
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
if styles[1].textcolour == 16711680 and tonumber(args.pct) < limit then
|
|
|
|
|
|
|
|
note("Additional spell "..args.name.." ["..args.num.."] is ignored, but will be practiced.")
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
if not in_spells(args.name) then
|
|
|
|
|
|
|
|
table.insert(spells, {type = "additional", name = args.name, pct = args.pct})
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function disable_learned_triggers()
|
|
|
|
|
|
|
|
EnableTriggerGroup("learned", false)
|
|
|
|
|
|
|
|
report()
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
function prac_count(t)
|
|
|
|
function prac_count(t)
|
|
|
|
local x = 0
|
|
|
|
local x = 0
|
|
|
|
for i, sp in ipairs(spells) do
|
|
|
|
for i, sp in ipairs(spells) do
|
|
|
@ -352,6 +485,26 @@ function next_blank_line()
|
|
|
|
EnableTrigger("next_blank_line", false)
|
|
|
|
EnableTrigger("next_blank_line", false)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function add(name, line, args)
|
|
|
|
|
|
|
|
if not additional then
|
|
|
|
|
|
|
|
additional = {}
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
for sp, num in pairs(additional) do
|
|
|
|
|
|
|
|
if num == args.num then
|
|
|
|
|
|
|
|
additional[sp] = nil
|
|
|
|
|
|
|
|
note(sp.." has been removed from additional spells.")
|
|
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
elseif sp == args.num then
|
|
|
|
|
|
|
|
additional[args.num] = nil
|
|
|
|
|
|
|
|
note(args.num.." has been removed from additional spells.")
|
|
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
additional[args.num] = 1
|
|
|
|
|
|
|
|
note(args.num.." has been added to additional spells.")
|
|
|
|
|
|
|
|
SaveState()
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
function string_capitalize(str)
|
|
|
|
function string_capitalize(str)
|
|
|
|
if #str < 2 then
|
|
|
|
if #str < 2 then
|
|
|
|
return string.upper(str)
|
|
|
|
return string.upper(str)
|
|
|
@ -371,15 +524,52 @@ function OnPluginBroadcast (msg, id, name, text)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function OnPluginSaveState()
|
|
|
|
|
|
|
|
SetVariable("additional", serialize.save_simple(additional))
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function by_name(a, b)
|
|
|
|
|
|
|
|
return a.name < b.name
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function list_additional()
|
|
|
|
|
|
|
|
local sorted = {}
|
|
|
|
|
|
|
|
for sp, num in pairs(additional) do
|
|
|
|
|
|
|
|
table.insert(sorted, {name = sp, num = num})
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
table.sort(sorted, by_name)
|
|
|
|
|
|
|
|
Note()
|
|
|
|
|
|
|
|
if not has_additional() then
|
|
|
|
|
|
|
|
note("You don't have any additional spells saved.")
|
|
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
note("You have the following additional spells added:")
|
|
|
|
|
|
|
|
for i, sp in ipairs(sorted) do
|
|
|
|
|
|
|
|
if tonumber(sp.name) then -- spell number just added
|
|
|
|
|
|
|
|
note("Unknown name ["..sp.num.."] (will show name after you prs)")
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
note(sp.name.." ["..sp.num.."]")
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
Note()
|
|
|
|
|
|
|
|
Note()
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
function help()
|
|
|
|
function help()
|
|
|
|
ColourNote("silver", "", "\nThis plugin will practice the following types of skills/spells:")
|
|
|
|
ColourNote("white", "", "\nThis plugin will practice the following:")
|
|
|
|
ColourNote("white", "", " spellup")
|
|
|
|
ColourNote("white", "", " skills/spells spellup")
|
|
|
|
ColourNote("white", "", " resist")
|
|
|
|
ColourNote("white", "", " spells resist")
|
|
|
|
ColourNote("white", "", " healing")
|
|
|
|
ColourNote("white", "", " spells healing")
|
|
|
|
ColourNote("white", "", " curative")
|
|
|
|
ColourNote("white", "", " skills/spells curative")
|
|
|
|
ColourNote("white", "", " passive")
|
|
|
|
ColourNote("white", "", " skills passive")
|
|
|
|
ColourNote("white", "", " movement")
|
|
|
|
ColourNote("white", "", " skills movement")
|
|
|
|
ColourNote("silver", "", "The command to practice all is ", "white", "", "prs", "silver", "", ".\n")
|
|
|
|
ColourNote("white", "", " additional skills/spells (your custom list)")
|
|
|
|
|
|
|
|
ColourNote("white", "", "The command to practice all is ", "orangered", "", "prs", "white", "", ".")
|
|
|
|
|
|
|
|
ColourNote("white", "", "The command to toggle additional spells is ", "orangered", "", "prs add <#>", "white", "", ".")
|
|
|
|
|
|
|
|
ColourNote("orangered", "", " ** ", "white", "", "Additional #'s will be converted to name after you run prs.")
|
|
|
|
|
|
|
|
ColourNote("white", "", "The command to list additional spells is ", "orangered", "", "prs add", "white", "", ".")
|
|
|
|
|
|
|
|
ColourNote("white", "", "The command to this help file is ", "orangered", "", "prs help", "white", "", ".")
|
|
|
|
|
|
|
|
Note()
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
DoAfterSpecial(.2, "help()", 12)
|
|
|
|
DoAfterSpecial(.2, "help()", 12)
|
|
|
|