Add Yellow Strategies support through E4
This commit is contained in:
parent
1e9fdb5174
commit
379a85c2e7
|
@ -541,6 +541,18 @@ end
|
||||||
|
|
||||||
-- silphElevator
|
-- silphElevator
|
||||||
|
|
||||||
|
strategyFunctions.silphCarbos = function(data)
|
||||||
|
if stats.nidoran.speedDV < 11 then
|
||||||
|
if Strategies.closeMenuFor(data) then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
else
|
||||||
|
data.item = "carbos"
|
||||||
|
data.poke = "nidoking"
|
||||||
|
return strategyFunctions.item(data)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
strategyFunctions.silphRival = function()
|
strategyFunctions.silphRival = function()
|
||||||
if Battle.isActive() then
|
if Battle.isActive() then
|
||||||
if Strategies.initialize() then
|
if Strategies.initialize() then
|
||||||
|
@ -578,8 +590,10 @@ end
|
||||||
-- playPokeflute
|
-- playPokeflute
|
||||||
|
|
||||||
strategyFunctions.tossTM34 = function()
|
strategyFunctions.tossTM34 = function()
|
||||||
if not Inventory.contains("carbos") then
|
if Strategies.initialize() then
|
||||||
return true
|
if not Inventory.contains("carbos") or Inventory.count() < 19 then
|
||||||
|
return true
|
||||||
|
end
|
||||||
end
|
end
|
||||||
return Strategies.tossItem("tm34")
|
return Strategies.tossItem("tm34")
|
||||||
end
|
end
|
||||||
|
@ -634,6 +648,202 @@ end
|
||||||
|
|
||||||
-- cinnabarCarbos
|
-- cinnabarCarbos
|
||||||
|
|
||||||
|
-- waitToReceive
|
||||||
|
|
||||||
|
strategyFunctions.fightGiovanni = function()
|
||||||
|
if Battle.isActive() then
|
||||||
|
if Strategies.initialize() then
|
||||||
|
status.canProgress = true
|
||||||
|
Bridge.chat(" Giovanni can end the run here with Dugtrio's high chance to critical...")
|
||||||
|
end
|
||||||
|
if Strategies.prepare("x_speed") then
|
||||||
|
local forced
|
||||||
|
local prepareAccuracy
|
||||||
|
local opponent = Battle.opponent()
|
||||||
|
if opponent == "persian" then
|
||||||
|
prepareAccuracy = true
|
||||||
|
if not status.prepared and not Strategies.isPrepared("x_accuracy")
|
||||||
|
status.prepared = true
|
||||||
|
Bridge.chat("needs to finish setting up against Persian...")
|
||||||
|
end
|
||||||
|
elseif opponent == "dugtrio" then
|
||||||
|
prepareAccuracy = Memory.value("battle", "dig") > 0
|
||||||
|
if prepareAccuracy and not status.dug then
|
||||||
|
status.dug = true
|
||||||
|
Bridge.chat("got Dig, which gives an extra turn to set up with X Accuracy. No criticals!")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if not prepareAccuracy or Strategies.prepare("x_accuracy") then
|
||||||
|
Battle.automate(forced)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
elseif status.canProgress then
|
||||||
|
Strategies.deepRun = true
|
||||||
|
Control.ignoreMiss = false
|
||||||
|
return true
|
||||||
|
else
|
||||||
|
Textbox.handle()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
strategyFunctions.depositPokemon = function()
|
||||||
|
if Memory.value("player", "party_size") == 1 then
|
||||||
|
if Menu.close() then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
else
|
||||||
|
local menuSize = Memory.value("menu", "size")
|
||||||
|
if not Menu.hasTextbox() then
|
||||||
|
if menuSize == 5 then
|
||||||
|
Menu.select(1)
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
local menuColumn = Menu.getCol()
|
||||||
|
if menuColumn == 10 then
|
||||||
|
Input.press("A")
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
if menuColumn == 5 then
|
||||||
|
Menu.select(1)
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
Input.press("A")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
strategyFunctions.centerSkip = function()
|
||||||
|
if Strategies.initialize() then
|
||||||
|
Strategies.setYolo("e4center")
|
||||||
|
if false then --TODO
|
||||||
|
local message = "is skipping the Elite 4 Center!"
|
||||||
|
Bridge.chat(message)
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return strategyFunctions.confirm({dir="Up"})
|
||||||
|
end
|
||||||
|
|
||||||
|
strategyFunctions.lorelei = function()
|
||||||
|
if Battle.isActive() then
|
||||||
|
status.canProgress = true
|
||||||
|
|
||||||
|
local opponentName = Battle.opponent()
|
||||||
|
if opponentName == "dewgong" then
|
||||||
|
if Memory.double("battle", "our_speed") < 121 then
|
||||||
|
if not status.speedFall then
|
||||||
|
status.speedFall = true
|
||||||
|
Bridge.chat("got speed fall from Dewgong D: Attempting to recover with X Speed...")
|
||||||
|
end
|
||||||
|
if not Strategies.prepare("x_speed") then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if Strategies.prepare("x_accuracy") then
|
||||||
|
Battle.automate()
|
||||||
|
end
|
||||||
|
elseif status.canProgress then
|
||||||
|
return true
|
||||||
|
else
|
||||||
|
Textbox.handle()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
strategyFunctions.bruno = function()
|
||||||
|
if Battle.isActive() then
|
||||||
|
status.canProgress = true
|
||||||
|
|
||||||
|
local forced
|
||||||
|
local opponentName = Battle.opponent()
|
||||||
|
if opponentName == "onix" then
|
||||||
|
forced = "ice_beam"
|
||||||
|
elseif opponentName == "hitmonchan" then
|
||||||
|
if not Strategies.prepare("x_accuracy") then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
Battle.automate(forced)
|
||||||
|
elseif status.canProgress then
|
||||||
|
return true
|
||||||
|
else
|
||||||
|
Textbox.handle()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
strategyFunctions.agatha = function()
|
||||||
|
if Battle.isActive() then
|
||||||
|
status.canProgress = true
|
||||||
|
if Combat.isSleeping() then
|
||||||
|
Inventory.use("pokeflute", nil, true)
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
if Pokemon.isOpponent("gengar") then
|
||||||
|
if Memory.double("battle", "our_speed") < 147 then
|
||||||
|
if Inventory.count("x_speed") > 1 then
|
||||||
|
status.preparing = nil
|
||||||
|
end
|
||||||
|
if not Strategies.prepare("x_speed") then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
Battle.automate()
|
||||||
|
elseif status.canProgress then
|
||||||
|
return true
|
||||||
|
else
|
||||||
|
Textbox.handle()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
strategyFunctions.lance = function()
|
||||||
|
if Battle.isActive() then
|
||||||
|
status.canProgress = true
|
||||||
|
local xItem
|
||||||
|
if Pokemon.isOpponent("dragonair") then
|
||||||
|
xItem = "x_speed"
|
||||||
|
else
|
||||||
|
xItem = "x_special"
|
||||||
|
end
|
||||||
|
if Strategies.prepare(xItem) then
|
||||||
|
Battle.automate()
|
||||||
|
end
|
||||||
|
elseif status.canProgress then
|
||||||
|
return true
|
||||||
|
else
|
||||||
|
Textbox.handle()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
strategyFunctions.blue = function()
|
||||||
|
if Battle.isActive() then
|
||||||
|
status.canProgress = true
|
||||||
|
local xItem
|
||||||
|
if Pokemon.isOpponent("exeggutor") then
|
||||||
|
if Combat.isSleeping() then
|
||||||
|
local sleepHeal
|
||||||
|
if not Combat.inRedBar() and Inventory.contains("full_restore") then
|
||||||
|
sleepHeal = "full_restore"
|
||||||
|
else
|
||||||
|
sleepHeal = "pokeflute"
|
||||||
|
end
|
||||||
|
Inventory.use(sleepHeal, nil, true)
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
xItem = "x_accuracy"
|
||||||
|
else
|
||||||
|
xItem = "x_special"
|
||||||
|
end
|
||||||
|
if Strategies.prepare(xItem) then
|
||||||
|
Battle.automate()
|
||||||
|
end
|
||||||
|
elseif status.canProgress then
|
||||||
|
return true
|
||||||
|
else
|
||||||
|
Textbox.handle()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
-- PROCESS
|
-- PROCESS
|
||||||
|
|
||||||
function Strategies.initGame(midGame)
|
function Strategies.initGame(midGame)
|
||||||
|
|
|
@ -26,6 +26,7 @@ local pokeIDs = {
|
||||||
onix = 34,
|
onix = 34,
|
||||||
pidgey = 36,
|
pidgey = 36,
|
||||||
kadabra = 38,
|
kadabra = 38,
|
||||||
|
hitmonchan = 44,
|
||||||
magneton = 54,
|
magneton = 54,
|
||||||
venonat = 65,
|
venonat = 65,
|
||||||
jinx = 72,
|
jinx = 72,
|
||||||
|
@ -39,11 +40,13 @@ local pokeIDs = {
|
||||||
paras = 109,
|
paras = 109,
|
||||||
weedle = 112,
|
weedle = 112,
|
||||||
kakuna = 113,
|
kakuna = 113,
|
||||||
|
dugtrio = 118,
|
||||||
dewgong = 120,
|
dewgong = 120,
|
||||||
caterpie = 123,
|
caterpie = 123,
|
||||||
metapod = 124,
|
metapod = 124,
|
||||||
hypno = 129,
|
hypno = 129,
|
||||||
weezing = 143,
|
weezing = 143,
|
||||||
|
persian = 144,
|
||||||
alakazam = 149,
|
alakazam = 149,
|
||||||
pidgeotto = 150,
|
pidgeotto = 150,
|
||||||
pidgeot = 151,
|
pidgeot = 151,
|
||||||
|
|
|
@ -61,6 +61,7 @@ local memoryNames = {
|
||||||
exp3 = 0x117B,
|
exp3 = 0x117B,
|
||||||
},
|
},
|
||||||
battle = {
|
battle = {
|
||||||
|
opponent_turns = 0x0CD5,
|
||||||
attack_turns = 0x1067,
|
attack_turns = 0x1067,
|
||||||
text = 0x1125,
|
text = 0x1125,
|
||||||
menu = 0x0C50,
|
menu = 0x0C50,
|
||||||
|
@ -72,6 +73,7 @@ local memoryNames = {
|
||||||
opponent_next_move = 0x0CDD,
|
opponent_next_move = 0x0CDD,
|
||||||
opponent_last_move = 0x0FCC,
|
opponent_last_move = 0x0FCC,
|
||||||
|
|
||||||
|
dig = 0x1067,
|
||||||
critical = 0x105E,
|
critical = 0x105E,
|
||||||
miss = 0x105F,
|
miss = 0x105F,
|
||||||
our_turn = 0x1FF1,
|
our_turn = 0x1FF1,
|
||||||
|
|
Loading…
Reference in New Issue