OOT updates (#821)
* oot: remove all escape characters in LogicTricks.py * only attempt to connect to client once * oot: don't kill player outside ToT or in market entrance fixed camera makes the game crash outside ToT. added market entrance to be safe, it doesn't matter if you don't die there
This commit is contained in:
parent
cfc9d79c79
commit
e6635cdd77
|
@ -48,7 +48,7 @@ deathlink_sent_this_death: we interacted with the multiworld on this death, wait
|
||||||
|
|
||||||
oot_loc_name_to_id = network_data_package["games"]["Ocarina of Time"]["location_name_to_id"]
|
oot_loc_name_to_id = network_data_package["games"]["Ocarina of Time"]["location_name_to_id"]
|
||||||
|
|
||||||
script_version: int = 1
|
script_version: int = 2
|
||||||
|
|
||||||
def get_item_value(ap_id):
|
def get_item_value(ap_id):
|
||||||
return ap_id - 66000
|
return ap_id - 66000
|
||||||
|
@ -186,7 +186,7 @@ async def n64_sync_task(ctx: OoTContext):
|
||||||
data = await asyncio.wait_for(reader.readline(), timeout=10)
|
data = await asyncio.wait_for(reader.readline(), timeout=10)
|
||||||
data_decoded = json.loads(data.decode())
|
data_decoded = json.loads(data.decode())
|
||||||
reported_version = data_decoded.get('scriptVersion', 0)
|
reported_version = data_decoded.get('scriptVersion', 0)
|
||||||
if reported_version == script_version:
|
if reported_version >= script_version:
|
||||||
if ctx.game is not None and 'locations' in data_decoded:
|
if ctx.game is not None and 'locations' in data_decoded:
|
||||||
# Not just a keep alive ping, parse
|
# Not just a keep alive ping, parse
|
||||||
asyncio.create_task(parse_payload(data_decoded, ctx, False))
|
asyncio.create_task(parse_payload(data_decoded, ctx, False))
|
||||||
|
|
|
@ -2,8 +2,8 @@ local socket = require("socket")
|
||||||
local json = require('json')
|
local json = require('json')
|
||||||
local math = require('math')
|
local math = require('math')
|
||||||
|
|
||||||
local last_modified_date = '2022-05-25' -- Should be the last modified date
|
local last_modified_date = '2022-07-24' -- Should be the last modified date
|
||||||
local script_version = 1
|
local script_version = 2
|
||||||
|
|
||||||
--------------------------------------------------
|
--------------------------------------------------
|
||||||
-- Heavily modified form of RiptideSage's tracker
|
-- Heavily modified form of RiptideSage's tracker
|
||||||
|
@ -1723,6 +1723,11 @@ function get_death_state()
|
||||||
end
|
end
|
||||||
|
|
||||||
function kill_link()
|
function kill_link()
|
||||||
|
-- market entrance: 27/28/29
|
||||||
|
-- outside ToT: 35/36/37.
|
||||||
|
-- if killed on these scenes the game crashes, so we wait until not on this screen.
|
||||||
|
local scene = global_context:rawget('cur_scene'):rawget()
|
||||||
|
if scene == 27 or scene == 28 or scene == 29 or scene == 35 or scene == 36 or scene == 37 then return end
|
||||||
mainmemory.write_u16_be(0x11A600, 0)
|
mainmemory.write_u16_be(0x11A600, 0)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -1824,13 +1829,15 @@ function main()
|
||||||
elseif (curstate == STATE_UNINITIALIZED) then
|
elseif (curstate == STATE_UNINITIALIZED) then
|
||||||
if (frame % 60 == 0) then
|
if (frame % 60 == 0) then
|
||||||
server:settimeout(2)
|
server:settimeout(2)
|
||||||
print("Attempting to connect")
|
|
||||||
local client, timeout = server:accept()
|
local client, timeout = server:accept()
|
||||||
if timeout == nil then
|
if timeout == nil then
|
||||||
print('Initial Connection Made')
|
print('Initial Connection Made')
|
||||||
curstate = STATE_INITIAL_CONNECTION_MADE
|
curstate = STATE_INITIAL_CONNECTION_MADE
|
||||||
ootSocket = client
|
ootSocket = client
|
||||||
ootSocket:settimeout(0)
|
ootSocket:settimeout(0)
|
||||||
|
else
|
||||||
|
print('Connection failed, ensure OoTClient is running and rerun oot_connector.lua')
|
||||||
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -51,20 +51,20 @@ known_logic_tricks = {
|
||||||
Can be reached by side-hopping off
|
Can be reached by side-hopping off
|
||||||
the watchtower.
|
the watchtower.
|
||||||
'''},
|
'''},
|
||||||
'Dodongo\'s Cavern Staircase with Bow': {
|
"Dodongo's Cavern Staircase with Bow": {
|
||||||
'name' : 'logic_dc_staircase',
|
'name' : 'logic_dc_staircase',
|
||||||
'tags' : ("Dodongo's Cavern",),
|
'tags' : ("Dodongo's Cavern",),
|
||||||
'tooltip' : '''\
|
'tooltip' : '''\
|
||||||
The Bow can be used to knock down the stairs
|
The Bow can be used to knock down the stairs
|
||||||
with two well-timed shots.
|
with two well-timed shots.
|
||||||
'''},
|
'''},
|
||||||
'Dodongo\'s Cavern Spike Trap Room Jump without Hover Boots': {
|
"Dodongo's Cavern Spike Trap Room Jump without Hover Boots": {
|
||||||
'name' : 'logic_dc_jump',
|
'name' : 'logic_dc_jump',
|
||||||
'tags' : ("Dodongo's Cavern",),
|
'tags' : ("Dodongo's Cavern",),
|
||||||
'tooltip' : '''\
|
'tooltip' : '''\
|
||||||
Jump is adult only.
|
Jump is adult only.
|
||||||
'''},
|
'''},
|
||||||
'Dodongo\'s Cavern Vines GS from Below with Longshot': {
|
"Dodongo's Cavern Vines GS from Below with Longshot": {
|
||||||
'name' : 'logic_dc_vines_gs',
|
'name' : 'logic_dc_vines_gs',
|
||||||
'tags' : ("Dodongo's Cavern", "Skulltulas",),
|
'tags' : ("Dodongo's Cavern", "Skulltulas",),
|
||||||
'tooltip' : '''\
|
'tooltip' : '''\
|
||||||
|
@ -73,7 +73,7 @@ known_logic_tricks = {
|
||||||
from below, by shooting it through the vines,
|
from below, by shooting it through the vines,
|
||||||
bypassing the need to lower the staircase.
|
bypassing the need to lower the staircase.
|
||||||
'''},
|
'''},
|
||||||
'Thieves\' Hideout "Kitchen" with No Additional Items': {
|
'''Thieves' Hideout "Kitchen" with No Additional Items''': {
|
||||||
'name' : 'logic_gerudo_kitchen',
|
'name' : 'logic_gerudo_kitchen',
|
||||||
'tags' : ("Thieves' Hideout", "Gerudo's Fortress"),
|
'tags' : ("Thieves' Hideout", "Gerudo's Fortress"),
|
||||||
'tooltip' : '''\
|
'tooltip' : '''\
|
||||||
|
@ -157,7 +157,7 @@ known_logic_tricks = {
|
||||||
Can jump up to the spinning platform from
|
Can jump up to the spinning platform from
|
||||||
below as adult.
|
below as adult.
|
||||||
'''},
|
'''},
|
||||||
'Crater\'s Bean PoH with Hover Boots': {
|
"Crater's Bean PoH with Hover Boots": {
|
||||||
'name' : 'logic_crater_bean_poh_with_hovers',
|
'name' : 'logic_crater_bean_poh_with_hovers',
|
||||||
'tags' : ("Death Mountain Crater",),
|
'tags' : ("Death Mountain Crater",),
|
||||||
'tooltip' : '''\
|
'tooltip' : '''\
|
||||||
|
@ -165,7 +165,7 @@ known_logic_tricks = {
|
||||||
near Goron City and walk up the
|
near Goron City and walk up the
|
||||||
very steep slope.
|
very steep slope.
|
||||||
'''},
|
'''},
|
||||||
'Zora\'s Domain Entry with Cucco': {
|
"Zora's Domain Entry with Cucco": {
|
||||||
'name' : 'logic_zora_with_cucco',
|
'name' : 'logic_zora_with_cucco',
|
||||||
'tags' : ("Zora's River",),
|
'tags' : ("Zora's River",),
|
||||||
'tooltip' : '''\
|
'tooltip' : '''\
|
||||||
|
@ -404,7 +404,7 @@ known_logic_tricks = {
|
||||||
Longshot can be shot through the ceiling to obtain
|
Longshot can be shot through the ceiling to obtain
|
||||||
the token with two fewer small keys than normal.
|
the token with two fewer small keys than normal.
|
||||||
'''},
|
'''},
|
||||||
'Zora\'s River Lower Freestanding PoH as Adult with Nothing': {
|
"Zora's River Lower Freestanding PoH as Adult with Nothing": {
|
||||||
'name' : 'logic_zora_river_lower',
|
'name' : 'logic_zora_river_lower',
|
||||||
'tags' : ("Zora's River",),
|
'tags' : ("Zora's River",),
|
||||||
'tooltip' : '''\
|
'tooltip' : '''\
|
||||||
|
@ -502,7 +502,7 @@ known_logic_tricks = {
|
||||||
you can get enough of a break to take some time
|
you can get enough of a break to take some time
|
||||||
to aim more carefully.
|
to aim more carefully.
|
||||||
'''},
|
'''},
|
||||||
'Dodongo\'s Cavern Scarecrow GS with Armos Statue': {
|
"Dodongo's Cavern Scarecrow GS with Armos Statue": {
|
||||||
'name' : 'logic_dc_scarecrow_gs',
|
'name' : 'logic_dc_scarecrow_gs',
|
||||||
'tags' : ("Dodongo's Cavern", "Skulltulas",),
|
'tags' : ("Dodongo's Cavern", "Skulltulas",),
|
||||||
'tooltip' : '''\
|
'tooltip' : '''\
|
||||||
|
@ -541,7 +541,7 @@ known_logic_tricks = {
|
||||||
'name' : 'logic_spirit_mq_lower_adult',
|
'name' : 'logic_spirit_mq_lower_adult',
|
||||||
'tags' : ("Spirit Temple",),
|
'tags' : ("Spirit Temple",),
|
||||||
'tooltip' : '''\
|
'tooltip' : '''\
|
||||||
It can be done with Din\'s Fire and Bow.
|
It can be done with Din's Fire and Bow.
|
||||||
Whenever an arrow passes through a lit torch, it
|
Whenever an arrow passes through a lit torch, it
|
||||||
resets the timer. It's finicky but it's also
|
resets the timer. It's finicky but it's also
|
||||||
possible to stand on the pillar next to the center
|
possible to stand on the pillar next to the center
|
||||||
|
@ -704,13 +704,13 @@ known_logic_tricks = {
|
||||||
in the same jump in order to destroy it before you
|
in the same jump in order to destroy it before you
|
||||||
fall into the lava.
|
fall into the lava.
|
||||||
'''},
|
'''},
|
||||||
'Zora\'s Domain Entry with Hover Boots': {
|
"Zora's Domain Entry with Hover Boots": {
|
||||||
'name' : 'logic_zora_with_hovers',
|
'name' : 'logic_zora_with_hovers',
|
||||||
'tags' : ("Zora's River",),
|
'tags' : ("Zora's River",),
|
||||||
'tooltip' : '''\
|
'tooltip' : '''\
|
||||||
Can hover behind the waterfall as adult.
|
Can hover behind the waterfall as adult.
|
||||||
'''},
|
'''},
|
||||||
'Zora\'s Domain GS with No Additional Items': {
|
"Zora's Domain GS with No Additional Items": {
|
||||||
'name' : 'logic_domain_gs',
|
'name' : 'logic_domain_gs',
|
||||||
'tags' : ("Zora's Domain", "Skulltulas",),
|
'tags' : ("Zora's Domain", "Skulltulas",),
|
||||||
'tooltip' : '''\
|
'tooltip' : '''\
|
||||||
|
@ -736,7 +736,7 @@ known_logic_tricks = {
|
||||||
needing a Bow.
|
needing a Bow.
|
||||||
Applies in both vanilla and MQ Shadow.
|
Applies in both vanilla and MQ Shadow.
|
||||||
'''},
|
'''},
|
||||||
'Stop Link the Goron with Din\'s Fire': {
|
"Stop Link the Goron with Din's Fire": {
|
||||||
'name' : 'logic_link_goron_dins',
|
'name' : 'logic_link_goron_dins',
|
||||||
'tags' : ("Goron City",),
|
'tags' : ("Goron City",),
|
||||||
'tooltip' : '''\
|
'tooltip' : '''\
|
||||||
|
@ -825,7 +825,7 @@ known_logic_tricks = {
|
||||||
Link will not be expected to do anything at Gerudo's
|
Link will not be expected to do anything at Gerudo's
|
||||||
Fortress.
|
Fortress.
|
||||||
'''},
|
'''},
|
||||||
'Zora\'s River Upper Freestanding PoH as Adult with Nothing': {
|
"Zora's River Upper Freestanding PoH as Adult with Nothing": {
|
||||||
'name' : 'logic_zora_river_upper',
|
'name' : 'logic_zora_river_upper',
|
||||||
'tags' : ("Zora's River",),
|
'tags' : ("Zora's River",),
|
||||||
'tooltip' : '''\
|
'tooltip' : '''\
|
||||||
|
@ -971,7 +971,7 @@ known_logic_tricks = {
|
||||||
in the Water Temple are not going to be relevant unless this
|
in the Water Temple are not going to be relevant unless this
|
||||||
trick is first enabled.
|
trick is first enabled.
|
||||||
'''},
|
'''},
|
||||||
'Water Temple Central Pillar GS with Farore\'s Wind': {
|
"Water Temple Central Pillar GS with Farore's Wind": {
|
||||||
'name' : 'logic_water_central_gs_fw',
|
'name' : 'logic_water_central_gs_fw',
|
||||||
'tags' : ("Water Temple", "Skulltulas",),
|
'tags' : ("Water Temple", "Skulltulas",),
|
||||||
'tooltip' : '''\
|
'tooltip' : '''\
|
||||||
|
@ -1104,7 +1104,7 @@ known_logic_tricks = {
|
||||||
this allows you to obtain the GS on the door frame
|
this allows you to obtain the GS on the door frame
|
||||||
as adult without Hookshot or Song of Time.
|
as adult without Hookshot or Song of Time.
|
||||||
'''},
|
'''},
|
||||||
'Dodongo\'s Cavern MQ Early Bomb Bag Area as Child': {
|
"Dodongo's Cavern MQ Early Bomb Bag Area as Child": {
|
||||||
'name' : 'logic_dc_mq_child_bombs',
|
'name' : 'logic_dc_mq_child_bombs',
|
||||||
'tags' : ("Dodongo's Cavern",),
|
'tags' : ("Dodongo's Cavern",),
|
||||||
'tooltip' : '''\
|
'tooltip' : '''\
|
||||||
|
@ -1113,7 +1113,7 @@ known_logic_tricks = {
|
||||||
without needing a Slingshot. You will
|
without needing a Slingshot. You will
|
||||||
take fall damage.
|
take fall damage.
|
||||||
'''},
|
'''},
|
||||||
'Dodongo\'s Cavern Two Scrub Room with Strength': {
|
"Dodongo's Cavern Two Scrub Room with Strength": {
|
||||||
'name' : 'logic_dc_scrub_room',
|
'name' : 'logic_dc_scrub_room',
|
||||||
'tags' : ("Dodongo's Cavern",),
|
'tags' : ("Dodongo's Cavern",),
|
||||||
'tooltip' : '''\
|
'tooltip' : '''\
|
||||||
|
@ -1122,7 +1122,7 @@ known_logic_tricks = {
|
||||||
destroy the mud wall blocking the room with two
|
destroy the mud wall blocking the room with two
|
||||||
Deku Scrubs.
|
Deku Scrubs.
|
||||||
'''},
|
'''},
|
||||||
'Dodongo\'s Cavern Child Slingshot Skips': {
|
"Dodongo's Cavern Child Slingshot Skips": {
|
||||||
'name' : 'logic_dc_slingshot_skip',
|
'name' : 'logic_dc_slingshot_skip',
|
||||||
'tags' : ("Dodongo's Cavern",),
|
'tags' : ("Dodongo's Cavern",),
|
||||||
'tooltip' : '''\
|
'tooltip' : '''\
|
||||||
|
@ -1132,7 +1132,7 @@ known_logic_tricks = {
|
||||||
you also enable the Adult variant: "Dodongo's
|
you also enable the Adult variant: "Dodongo's
|
||||||
Cavern Spike Trap Room Jump without Hover Boots".
|
Cavern Spike Trap Room Jump without Hover Boots".
|
||||||
'''},
|
'''},
|
||||||
'Dodongo\'s Cavern MQ Light the Eyes with Strength': {
|
"Dodongo's Cavern MQ Light the Eyes with Strength": {
|
||||||
'name' : 'logic_dc_mq_eyes',
|
'name' : 'logic_dc_mq_eyes',
|
||||||
'tags' : ("Dodongo's Cavern",),
|
'tags' : ("Dodongo's Cavern",),
|
||||||
'tooltip' : '''\
|
'tooltip' : '''\
|
||||||
|
@ -1145,7 +1145,7 @@ known_logic_tricks = {
|
||||||
Also, the bombable floor before King Dodongo can be
|
Also, the bombable floor before King Dodongo can be
|
||||||
destroyed with Hammer if hit in the very center.
|
destroyed with Hammer if hit in the very center.
|
||||||
'''},
|
'''},
|
||||||
'Dodongo\'s Cavern MQ Back Areas as Child without Explosives': {
|
"Dodongo's Cavern MQ Back Areas as Child without Explosives": {
|
||||||
'name' : 'logic_dc_mq_child_back',
|
'name' : 'logic_dc_mq_child_back',
|
||||||
'tags' : ("Dodongo's Cavern",),
|
'tags' : ("Dodongo's Cavern",),
|
||||||
'tooltip' : '''\
|
'tooltip' : '''\
|
||||||
|
@ -1232,7 +1232,7 @@ known_logic_tricks = {
|
||||||
It can also be done as child, using the
|
It can also be done as child, using the
|
||||||
Slingshot instead of the Bow.
|
Slingshot instead of the Bow.
|
||||||
'''},
|
'''},
|
||||||
'Fire Temple East Tower without Scarecrow\'s Song': {
|
"Fire Temple East Tower without Scarecrow's Song": {
|
||||||
'name' : 'logic_fire_scarecrow',
|
'name' : 'logic_fire_scarecrow',
|
||||||
'tags' : ("Fire Temple",),
|
'tags' : ("Fire Temple",),
|
||||||
'tooltip' : '''\
|
'tooltip' : '''\
|
||||||
|
@ -1277,14 +1277,14 @@ known_logic_tricks = {
|
||||||
Removes the requirements for the Lens of Truth
|
Removes the requirements for the Lens of Truth
|
||||||
in Bottom of the Well.
|
in Bottom of the Well.
|
||||||
'''},
|
'''},
|
||||||
'Ganon\'s Castle MQ without Lens of Truth': {
|
"Ganon's Castle MQ without Lens of Truth": {
|
||||||
'name' : 'logic_lens_castle_mq',
|
'name' : 'logic_lens_castle_mq',
|
||||||
'tags' : ("Lens of Truth","Ganon's Castle",),
|
'tags' : ("Lens of Truth","Ganon's Castle",),
|
||||||
'tooltip' : '''\
|
'tooltip' : '''\
|
||||||
Removes the requirements for the Lens of Truth
|
Removes the requirements for the Lens of Truth
|
||||||
in Ganon's Castle MQ.
|
in Ganon's Castle MQ.
|
||||||
'''},
|
'''},
|
||||||
'Ganon\'s Castle without Lens of Truth': {
|
"Ganon's Castle without Lens of Truth": {
|
||||||
'name' : 'logic_lens_castle',
|
'name' : 'logic_lens_castle',
|
||||||
'tags' : ("Lens of Truth","Ganon's Castle",),
|
'tags' : ("Lens of Truth","Ganon's Castle",),
|
||||||
'tooltip' : '''\
|
'tooltip' : '''\
|
||||||
|
|
Loading…
Reference in New Issue