Refactor strategies to game subsystem
This commit is contained in:
parent
0ec69a6a95
commit
f7a1faf1ca
|
@ -1,6 +1,7 @@
|
||||||
local control = {}
|
local control = {}
|
||||||
|
|
||||||
local combat = require "ai.combat"
|
local combat = require "ai.combat"
|
||||||
|
local strategies
|
||||||
|
|
||||||
local bridge = require "util.bridge"
|
local bridge = require "util.bridge"
|
||||||
local memory = require "util.memory"
|
local memory = require "util.memory"
|
||||||
|
@ -19,9 +20,11 @@ local encounters = 0
|
||||||
local canDie, shouldFight, minExp
|
local canDie, shouldFight, minExp
|
||||||
local shouldCatch, attackIdx
|
local shouldCatch, attackIdx
|
||||||
local extraEncounter, maxEncounters
|
local extraEncounter, maxEncounters
|
||||||
local isYolo, battleYolo
|
local battleYolo
|
||||||
|
|
||||||
control.areaName = "Unknown"
|
control.areaName = "Unknown"
|
||||||
|
control.moonEncounters = nil
|
||||||
|
control.yolo = false
|
||||||
|
|
||||||
local controlFunctions = {
|
local controlFunctions = {
|
||||||
|
|
||||||
|
@ -157,7 +160,7 @@ function control.canCatch(partySize)
|
||||||
local pokeballs = inventory.count("pokeball")
|
local pokeballs = inventory.count("pokeball")
|
||||||
local minimumCount = 4 - partySize
|
local minimumCount = 4 - partySize
|
||||||
if pokeballs < minimumCount then
|
if pokeballs < minimumCount then
|
||||||
require("ai.strategies").reset("Not enough PokeBalls", pokeballs)
|
strategies.reset("Not enough PokeBalls", pokeballs)
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
return true
|
return true
|
||||||
|
@ -167,7 +170,7 @@ function control.shouldCatch(partySize)
|
||||||
if maxEncounters and encounters > maxEncounters then
|
if maxEncounters and encounters > maxEncounters then
|
||||||
local extraCount = extraEncounter and pokemon.inParty(extraEncounter)
|
local extraCount = extraEncounter and pokemon.inParty(extraEncounter)
|
||||||
if not extraCount or encounters > maxEncounters + 1 then
|
if not extraCount or encounters > maxEncounters + 1 then
|
||||||
require("ai.strategies").reset("Too many encounters", encounters)
|
strategies.reset("Too many encounters", encounters)
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -206,7 +209,7 @@ end
|
||||||
-- Items
|
-- Items
|
||||||
|
|
||||||
function control.canRecover()
|
function control.canRecover()
|
||||||
return potionInBattle and (not battleYolo or not isYolo)
|
return potionInBattle and (not battleYolo or not control.yolo)
|
||||||
end
|
end
|
||||||
|
|
||||||
function control.set(data)
|
function control.set(data)
|
||||||
|
@ -214,7 +217,7 @@ function control.set(data)
|
||||||
end
|
end
|
||||||
|
|
||||||
function control.setYolo(enabled)
|
function control.setYolo(enabled)
|
||||||
isYolo = enabled
|
control.yolo = enabled
|
||||||
end
|
end
|
||||||
|
|
||||||
function control.setPotion(enabled)
|
function control.setPotion(enabled)
|
||||||
|
@ -229,6 +232,9 @@ function control.wildEncounter()
|
||||||
encounters = encounters + 1
|
encounters = encounters + 1
|
||||||
paint.wildEncounters(encounters)
|
paint.wildEncounters(encounters)
|
||||||
bridge.encounter()
|
bridge.encounter()
|
||||||
|
if control.moonEncounters then
|
||||||
|
control.moonEncounters = control.moonEncounters + 1
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function control.reset()
|
function control.reset()
|
||||||
|
@ -242,8 +248,12 @@ function control.reset()
|
||||||
fightEncounter = 0
|
fightEncounter = 0
|
||||||
caveFights = 0
|
caveFights = 0
|
||||||
battleYolo = false
|
battleYolo = false
|
||||||
isYolo = false
|
control.yolo = false
|
||||||
maxEncounters = nil
|
maxEncounters = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function control.init()
|
||||||
|
strategies = require("ai."..GAME_NAME..".strategies")
|
||||||
|
end
|
||||||
|
|
||||||
return control
|
return control
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
2524
ai/strategies.lua
2524
ai/strategies.lua
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,41 @@
|
||||||
|
local strategies = require "ai.strategies"
|
||||||
|
|
||||||
|
local combat = require "ai.combat"
|
||||||
|
local control = require "ai.control"
|
||||||
|
|
||||||
|
local battle = require "action.battle"
|
||||||
|
local shop = require "action.shop"
|
||||||
|
local textbox = require "action.textbox"
|
||||||
|
local walk = require "action.walk"
|
||||||
|
|
||||||
|
local bridge = require "util.bridge"
|
||||||
|
local input = require "util.input"
|
||||||
|
local memory = require "util.memory"
|
||||||
|
local menu = require "util.menu"
|
||||||
|
local player = require "util.player"
|
||||||
|
local utils = require "util.utils"
|
||||||
|
|
||||||
|
local inventory = require "storage.inventory"
|
||||||
|
local pokemon = require "storage.pokemon"
|
||||||
|
|
||||||
|
local status = strategies.status
|
||||||
|
|
||||||
|
strategies.timeRequirements = {}
|
||||||
|
|
||||||
|
-- STRATEGIES
|
||||||
|
|
||||||
|
local strategyFunctions = strategies.functions
|
||||||
|
|
||||||
|
-- PROCESS
|
||||||
|
|
||||||
|
function strategies.initGame(midGame)
|
||||||
|
if not STREAMING_MODE then
|
||||||
|
-- strategies.setYolo("")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function strategies.resetGame()
|
||||||
|
status = strategies.status
|
||||||
|
end
|
||||||
|
|
||||||
|
return strategies
|
9
main.lua
9
main.lua
|
@ -20,7 +20,7 @@ local walk = require "action.walk"
|
||||||
|
|
||||||
local combat = require "ai.combat"
|
local combat = require "ai.combat"
|
||||||
local control = require "ai.control"
|
local control = require "ai.control"
|
||||||
local strategies = require "ai.strategies"
|
local strategies = require("ai."..GAME_NAME..".strategies")
|
||||||
|
|
||||||
local bridge = require "util.bridge"
|
local bridge = require "util.bridge"
|
||||||
local input = require "util.input"
|
local input = require "util.input"
|
||||||
|
@ -95,7 +95,9 @@ local function resetAll()
|
||||||
math.randomseed(strategies.seed)
|
math.randomseed(strategies.seed)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Execute
|
-- EXECUTE
|
||||||
|
|
||||||
|
control.init()
|
||||||
|
|
||||||
print("Welcome to PokeBot "..GAME_NAME.." version "..VERSION)
|
print("Welcome to PokeBot "..GAME_NAME.." version "..VERSION)
|
||||||
STREAMING_MODE = not walk.init()
|
STREAMING_MODE = not walk.init()
|
||||||
|
@ -166,9 +168,6 @@ while true do
|
||||||
if battleState == 1 then
|
if battleState == 1 then
|
||||||
if not inBattle then
|
if not inBattle then
|
||||||
control.wildEncounter()
|
control.wildEncounter()
|
||||||
if strategies.moonEncounters then
|
|
||||||
strategies.moonEncounters = strategies.moonEncounters + 1
|
|
||||||
end
|
|
||||||
inBattle = true
|
inBattle = true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue