Add ability to ignore mobs by name, fix Utility.pascalCase to return only one value

main
AreiaAard 4 years ago
parent 1b4192257a
commit 9329321b8b

@ -152,6 +152,17 @@ function Settings.initialize()
"Settings.ignore_level_toggle"
)
AddAlias("alias_settings_ignore_mob_display",
"^ac\\s+ignore\\s+mobs?$", "",
alias_flag.Enabled + alias_flag.IgnoreAliasCase + alias_flag.RegularExpression + alias_flag.Temporary,
"Settings.ignore_mob_display"
)
AddAlias("alias_settings_ignore_mob_toggle",
"^ac\\s+ignore\\s+mob\\s+(?<mob>.+?)$", "",
alias_flag.Enabled + alias_flag.IgnoreAliasCase + alias_flag.RegularExpression + alias_flag.Temporary,
"Settings.ignore_mob_toggle"
)
AddAlias("alias_settings_kill_cmd",
"^ac\\s+killcmd(?:\\s+(?<setting>.+?))?$", "",
alias_flag.Enabled + alias_flag.IgnoreAliasCase + alias_flag.RegularExpression + alias_flag.Temporary,
@ -175,7 +186,8 @@ function Settings.default()
aimed = true, evil = false, good = false,
sanctuary = true, wounded = true,
},
level = {}
level = {},
mobs = {},
},
killCmds = {"backstab"},
showConsiderOutput = false,
@ -277,9 +289,37 @@ function Settings.ignore_level_toggle(alias, line, wc)
))
end
function Settings.ignore_mob_display()
local alphabetized = {}
for name in pairs(Settings.config.ignore.mobs) do
table.insert(alphabetized, Utility.pascalCase(name))
end
table.sort(alphabetized)
Utility.plugin_msg("Ignored mobs:")
if (#alphabetized == 0) then
Utility.print(" No mobs ignored")
return
end
for _, name in ipairs(alphabetized) do
Utility.print(string.format(" @Y%s", name))
end
end
function Settings.ignore_mob_toggle(alias, line, wc)
local mob = wc.mob:lower()
Settings.config.ignore.mobs[mob] = not Settings.config.ignore.mobs[mob] and true or nil
Settings.save()
Utility.plugin_msg(string.format("%s @wignoreing mob @Y%s@w.",
Settings.config.ignore.mobs[mob] and "@GNow" or "@RNo longer",
mob
))
end
function Settings.should_ignore(mob)
-- ignore mob if it has divine protection
local ignoreMob = mob.protected
-- ignore if already ignored or mob's name is ignored
ignoreMob = ignoreMob or Settings.config.ignore.mobs[mob.name:lower()]
-- ignore if already ignored or mob's level range is set to ignored
ignoreMob = ignoreMob or Settings.config.ignore.level[mob.levelRange]
for flag in pairs(mob.flags) do
@ -623,11 +663,12 @@ function Utility.display_help()
end
function Utility.pascalCase(str)
return str:gsub("(%a)([%w_']*)",
str = str:gsub("(%a)([%w_']*)",
function(first,remainder)
return string.format("%s%s", first:upper(), remainder:lower())
end
)
return str
end

Loading…
Cancel
Save