102 lines
2.1 KiB
Lua
102 lines
2.1 KiB
Lua
local Settings = {}
|
|
|
|
local Textbox = require "action.textbox"
|
|
local Strategies = require "ai.strategies"
|
|
|
|
local Bridge = require "util.bridge"
|
|
local Input = require "util.input"
|
|
local Memory = require "util.memory"
|
|
local Menu = require "util.menu"
|
|
|
|
local START_WAIT = 99
|
|
|
|
local yellow = YELLOW
|
|
|
|
local settings_menu
|
|
if yellow then
|
|
settings_menu = 93
|
|
else
|
|
settings_menu = 94
|
|
end
|
|
|
|
local desired = {}
|
|
if yellow then
|
|
desired.text_speed = 1
|
|
desired.battle_animation = 128
|
|
desired.battle_style = 64
|
|
else
|
|
desired.text_speed = 1
|
|
desired.battle_animation = 10
|
|
-- desired.battle_style =
|
|
end
|
|
|
|
local function isEnabled(name)
|
|
if yellow then
|
|
local matching = {
|
|
text_speed = 0xF,
|
|
battle_animation = 128,
|
|
battle_style = 64
|
|
}
|
|
local settingMask = Memory.value("setting", "yellow_bitmask", true)
|
|
return bit.band(settingMask, matching[name]) == desired[name]
|
|
else
|
|
return Memory.value("setting", name) == desired[name]
|
|
end
|
|
end
|
|
|
|
-- PUBLIC
|
|
|
|
function Settings.set(...)
|
|
for i,name in ipairs(arg) do
|
|
if not isEnabled(name) then
|
|
if Menu.open(settings_menu, 1) then
|
|
Menu.setOption(name, desired[name])
|
|
end
|
|
return false
|
|
end
|
|
end
|
|
return Menu.cancel(settings_menu)
|
|
end
|
|
|
|
function Settings.startNewAdventure(startWait)
|
|
local startMenu, withBattleStyle
|
|
if yellow then
|
|
startMenu = Memory.raw(0x0F95) == 0
|
|
withBattleStyle = "battle_style"
|
|
else
|
|
startMenu = Memory.value("player", "name") ~= 0
|
|
end
|
|
if startMenu and Menu.getCol() ~= 0 then
|
|
if Settings.set("text_speed", "battle_animation", withBattleStyle) then
|
|
Menu.select(0)
|
|
end
|
|
elseif math.random(0, startWait) == 0 then
|
|
Input.press("Start", 2)
|
|
end
|
|
end
|
|
|
|
function Settings.choosePlayerNames()
|
|
local name
|
|
if Memory.value("player", "name2") == 80 then
|
|
name = "E"
|
|
else
|
|
name = "B"
|
|
end
|
|
Textbox.name(name, true)
|
|
end
|
|
|
|
function Settings.pollForResponse(forcedName)
|
|
local response = Bridge.process()
|
|
if not INTERNAL or Strategies.replay then
|
|
response = forcedName
|
|
elseif response then
|
|
response = tonumber(response)
|
|
end
|
|
if response then
|
|
Bridge.polling = false
|
|
Textbox.setName(response)
|
|
end
|
|
end
|
|
|
|
return Settings
|