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:
espeon65536 2022-07-24 20:07:22 -04:00 committed by GitHub
parent cfc9d79c79
commit e6635cdd77
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 34 additions and 27 deletions

View File

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

View File

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

View File

@ -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' : '''\