Refactor strategies to game subsystem

This commit is contained in:
Kyle Coburn 2015-04-06 00:50:00 -07:00
parent 0ec69a6a95
commit f7a1faf1ca
5 changed files with 2538 additions and 2440 deletions

View File

@ -1,6 +1,7 @@
local control = {}
local combat = require "ai.combat"
local strategies
local bridge = require "util.bridge"
local memory = require "util.memory"
@ -19,9 +20,11 @@ local encounters = 0
local canDie, shouldFight, minExp
local shouldCatch, attackIdx
local extraEncounter, maxEncounters
local isYolo, battleYolo
local battleYolo
control.areaName = "Unknown"
control.moonEncounters = nil
control.yolo = false
local controlFunctions = {
@ -157,7 +160,7 @@ function control.canCatch(partySize)
local pokeballs = inventory.count("pokeball")
local minimumCount = 4 - partySize
if pokeballs < minimumCount then
require("ai.strategies").reset("Not enough PokeBalls", pokeballs)
strategies.reset("Not enough PokeBalls", pokeballs)
return false
end
return true
@ -167,7 +170,7 @@ function control.shouldCatch(partySize)
if maxEncounters and encounters > maxEncounters then
local extraCount = extraEncounter and pokemon.inParty(extraEncounter)
if not extraCount or encounters > maxEncounters + 1 then
require("ai.strategies").reset("Too many encounters", encounters)
strategies.reset("Too many encounters", encounters)
return false
end
end
@ -206,7 +209,7 @@ end
-- Items
function control.canRecover()
return potionInBattle and (not battleYolo or not isYolo)
return potionInBattle and (not battleYolo or not control.yolo)
end
function control.set(data)
@ -214,7 +217,7 @@ function control.set(data)
end
function control.setYolo(enabled)
isYolo = enabled
control.yolo = enabled
end
function control.setPotion(enabled)
@ -229,6 +232,9 @@ function control.wildEncounter()
encounters = encounters + 1
paint.wildEncounters(encounters)
bridge.encounter()
if control.moonEncounters then
control.moonEncounters = control.moonEncounters + 1
end
end
function control.reset()
@ -242,8 +248,12 @@ function control.reset()
fightEncounter = 0
caveFights = 0
battleYolo = false
isYolo = false
control.yolo = false
maxEncounters = nil
end
function control.init()
strategies = require("ai."..GAME_NAME..".strategies")
end
return control

2382
ai/red/strategies.lua Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

41
ai/yellow/strategies.lua Normal file
View File

@ -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

View File

@ -20,7 +20,7 @@ local walk = require "action.walk"
local combat = require "ai.combat"
local control = require "ai.control"
local strategies = require "ai.strategies"
local strategies = require("ai."..GAME_NAME..".strategies")
local bridge = require "util.bridge"
local input = require "util.input"
@ -95,7 +95,9 @@ local function resetAll()
math.randomseed(strategies.seed)
end
-- Execute
-- EXECUTE
control.init()
print("Welcome to PokeBot "..GAME_NAME.." version "..VERSION)
STREAMING_MODE = not walk.init()
@ -166,9 +168,6 @@ while true do
if battleState == 1 then
if not inBattle then
control.wildEncounter()
if strategies.moonEncounters then
strategies.moonEncounters = strategies.moonEncounters + 1
end
inBattle = true
end
end