From c98300e2ffec3a0b68edf1eaf3d4845038ea7518 Mon Sep 17 00:00:00 2001 From: codemann8 Date: Fri, 6 Jan 2023 21:37:28 -0600 Subject: [PATCH] Merged in DR v1.2.0.3 --- Doors.py | 2 +- ItemList.py | 17 ++++++++++++ Main.py | 14 ++-------- RELEASENOTES.md | 11 +++++--- Rom.py | 4 +-- data/base2current.bps | Bin 105064 -> 105092 bytes .../async_doors_league/S3_BombBag.yaml | 23 ++++++++++++++++ docs/presets/async_doors_league/S3_Main.yaml | 22 +++++++++++++++ .../async_doors_league/S3_PotteryLottery.yaml | 22 +++++++++++++++ .../async_doors_league/S3_Standard.yaml | 25 ++++++++++++++++++ resources/app/gui/lang/en.json | 1 + .../gui/randomize/generation/checkboxes.json | 3 ++- source/classes/CustomSettings.py | 5 +++- source/classes/constants.py | 1 + source/overworld/EntranceShuffle2.py | 4 ++- 15 files changed, 133 insertions(+), 21 deletions(-) create mode 100644 docs/presets/async_doors_league/S3_BombBag.yaml create mode 100644 docs/presets/async_doors_league/S3_Main.yaml create mode 100644 docs/presets/async_doors_league/S3_PotteryLottery.yaml create mode 100644 docs/presets/async_doors_league/S3_Standard.yaml diff --git a/Doors.py b/Doors.py index 32ffd9ae..6627a345 100644 --- a/Doors.py +++ b/Doors.py @@ -775,7 +775,7 @@ def create_doors(world, player): create_door(player, 'Ice Freezors Hole', Hole), create_door(player, 'Ice Freezors Bomb Hole', Hole), # combine these two? -- they have to lead to the same spot create_door(player, 'Ice Freezors Ledge Hole', Hole), - create_door(player, 'Ice Freezors Ledge ES', Intr).dir(Ea, 0x7e, Bot, High).pos(2), + create_door(player, 'Ice Freezors Ledge ES', Intr).dir(Ea, 0x7e, Bot, High).pos(1), create_door(player, 'Ice Tall Hint WS', Intr).dir(We, 0x7e, Bot, High).pos(1), create_door(player, 'Ice Tall Hint EN', Nrml).dir(Ea, 0x7e, Top, High).pos(2), create_door(player, 'Ice Tall Hint SE', Nrml).dir(So, 0x7e, Right, High).small_key().pos(0).portal(X, 0x02), diff --git a/ItemList.py b/ItemList.py index dd15a1ad..e7a21160 100644 --- a/ItemList.py +++ b/ItemList.py @@ -1123,9 +1123,26 @@ def get_pool_core(world, player, progressive, shuffle, difficulty, treasure_hunt pool.extend(['Small Key (Universal)']) else: pool.extend(['Small Key (Universal)']) + modify_pool_for_start_inventory(pool, world, player) return (pool, placed_items, precollected_items, clock_mode, lamps_needed_for_dark_rooms) +def modify_pool_for_start_inventory(pool, world, player): + for item in world.precollected_items: + if item.player == player: + pool.remove(item.name) + if item.dungeon: + d = world.get_dungeon(item.dungeon, item.player) + match = next((i for i in d.all_items if i.name == item.name), None) + if match: + if match.map or match.compass: + d.dungeon_items.remove(match) + elif match.smallkey: + d.small_keys.remove(match) + elif match.bigkey: + d.big_key.remove(match) + + def make_custom_item_pool(world, player, progressive, shuffle, difficulty, timer, goal, mode, swords, bombbag, customitemarray): pool = [] placed_items = {} diff --git a/Main.py b/Main.py index 73502cf4..f584b791 100644 --- a/Main.py +++ b/Main.py @@ -35,7 +35,7 @@ from source.overworld.EntranceShuffle2 import link_entrances_new from source.tools.BPS import create_bps_from_data from source.classes.CustomSettings import CustomSettings -__version__ = '1.2.0.2-u' +__version__ = '1.2.0.3-u' from source.classes.BabelFish import BabelFish @@ -160,7 +160,7 @@ def main(args, seed=None, fish=None): world.player_names[player].append(name) logger.info('') world.settings = CustomSettings() - world.settings.create_from_world(world) + world.settings.create_from_world(world, args.race) outfilebase = f'OR_{args.outputname if args.outputname else world.seed}' @@ -202,16 +202,6 @@ def main(args, seed=None, fish=None): item = ItemFactory(inv_item.strip(), p) if item: world.push_precollected(item) - if item.dungeon: - d = world.get_dungeon(item.dungeon, item.player) - match = next((i for i in d.all_items if i.name == item.name), None) - if match: - if match.map or match.compass: - d.dungeon_items.remove(match) - elif match.smallkey: - d.small_keys.remove(match) - elif match.bigkey: - d.big_key.remove(match) if args.print_custom_yaml: world.settings.record_info(world) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 794af2d6..21f4a884 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -109,6 +109,14 @@ These are now independent of retro mode and have three options: None, Random, an # Bug Fixes and Notes +* 1.2.0.3-u + * Starting inventory taken into account with default item pool. (Custom pools must do this themselves) + * Fast ROM update + * Fix for restricted boss item counting maps & compasses as vital + * Bug fix for vanilla ER + inverted + experimental +* 1.2.0.2-u + * Fixed a bug with certain trap doors missing + * Added a hint reference for district hints * 1.2.0.1-u * Added new ganonhunt and completionist goals * Fixed the issue when defeating Agahnim and standing in the doorway can cause door state to linger. @@ -116,9 +124,6 @@ These are now independent of retro mode and have three options: None, Random, an * Fix for vanilla Doors + Standard + ER * Added a limit per dungeon on small key doors to ensure reasonable generation * Fixed many small bugs -* 1.2.0.2-u - * Fixed a bug with certain trap doors missing - * Added a hint reference for district hints # Known Issues diff --git a/Rom.py b/Rom.py index fdb2f0c1..cf54c71d 100644 --- a/Rom.py +++ b/Rom.py @@ -38,7 +38,7 @@ from source.dungeon.RoomList import Room0127 JAP10HASH = '03a63945398191337e896e5771f77173' -RANDOMIZERBASEHASH = '1cdb34399467efa346b713db54d6cb02' +RANDOMIZERBASEHASH = '45aa34e724750862234f9a4b09caa3d6' class JsonRom(object): @@ -2343,7 +2343,7 @@ def write_strings(rom, world, player, team): for loc_name in district.locations: location_item = world.get_location(loc_name, player).item if location_item.advancement: - if 'Heart Container' in location_item.name: + if 'Heart Container' in location_item.name or location_item.compass or location_item.map: continue itm_type = 'useful' if useful_item_for_hint(location_item, world) else 'vital' hint_type = 'path' diff --git a/data/base2current.bps b/data/base2current.bps index ee0b630f2e14630a2a1a55b7c3685e9c93c6e881..7daea3d4a4286f9d848442a4260756e9c70556ca 100644 GIT binary patch delta 1359 zcmW-feN2-_9LIa5uu@uDRG>;->(Qye6cz=1iGqn6;1pjbllcl6&D82Pqtm$w+|w4c z4?KP0u{=@+R4E*7#FpVwv$$3oh%j~OHk}*lMy6xfEUr3T3{kpcf82fUoBQ53zuzx6 zaWT&DRh(A?b}V^(JrVHuJYUr3rF`~7vEA$YC|i!L4L&zv3%?>|V+S z_vmpreBBD45ng0qtN~x{T-^4Qy)34za03ZC81oLPaUiBwhAqOI49r59r?Qja=PBYQ9nHrjcf}X^V9Bwh$^xR zC|kkgC@pfcHz~O}8!;mwA~P!xtw9Z3u)g6zdqKN#a&*F^YZ()JW7aRa@`KtvH0t7+ zRa~-nk z6grYR8rT%1-GQoqYLv5{)=U=c3es$u>TiG=M>AyL74G}*ln==UZ7L-m;##i_@ z5ix5jB?Ow%u_S`GDufz>jYGFzAy{zZZVsUP1yl2-0CQOqunl0JUINlYM0TWtGejh7?xRIid3H278h97CiP>D;y&00a-^LwW>xM$NRMQ)z6r!zHu+R%h9xlkJz%x z8JrS=^vzi7NetF#CFKHxqHZo%k}E|EsN4@wN2wwSv4?vfszS1{An+yxRrES{fcFFs zYlEs`pG2#=#I8Nx#Lq_7kti<|Z%_VA$9{C^8OK7fHw9;akg%hmxM4`HU8aTGo17j2 z!dy~1m_Gw^igG(w-EW0G4xP3&L1E{L(!okGj_|8Ww8f(yK5?4T!BH~gST)Fz;gM)G zGIz)kdi=X8@NWcjZ>m8)_=2legSlkJt!gljdthyRU**N#peMfsOK{Bz%40bmnPHJVkp1FH1Dq-=MwTkM=XMa_mR(&4>ARS o@r|wo@w*e-c3K>snqtf0YX9O~hI`TiJ`@hNeK)*r=IQtT1G45|wg3PC delta 1331 zcmW-ee^Aq99LM+B297VAEKpc6;>*M2K{y3Z6TwsPLPSMU`~e}_D7aH+nU`sn%Jbbo z8!*QBHoiJe89z^!v;o?>PMMHg?$o=TW*KTxn$f!St6>?}Ne}(=ygu)H-p}XWpU+c$ zE_D2CsHYOP4y-Kr5+qWIcgpMGypFvg-35J|J>7m1J!`;?Qhl%_k=RjF117+?Yk#pJ zj}-?GUACaReWyQYv;~pIf=iB`K+7%I1N!uP=A^rwEU}^fW0=1P?ST2Wr08X=tL;V3 zJ5KceZB^L~Q>XH%1{?l^`IHTI$(jyr>&spTkWcS%e(6h-g;wV^Z$35}dZTaL+B0Uk&W z@c_m5p{u8ns8~S3Zw?!$=W?c8g)eoXoCX>Wr8nS#GtACuSG4lLG#XR~p^E7*Txa28 z9CD6}ZZ_Ho>&qAvQZ~18iydo>T(QH*ZE+l^ZreY|_@~5T-+_K3w~CtW*^{HSjEk2N zPGe0Y7C(q;tCrMOk~-nx(Q}ida)^00Mq64 zZwSbH7L)MKhZiLxjQf5wVd3sekVPM8VqvF7YAEwO2fnD@B8GN(TA0#juW+cS8Ve_4 zA(OVd5er6HEcQzSnr^30@)%!hV?>pujd68khDMPDldvZqisb$zQ6Y@P!y@&T4QEca zyDmshX(~ZTp7D=Y!NP6GGe;nO%g)_lq-l=RX6Wh*Z0N|ViX^8ByJ|{*pV}(=9(W9`C?%2zGIf-&1VJK=UWOok!5?fuJvI!U@L{%g zjmsx_f-f6}*~?y)f&GH;AJz$#%1C0C1i~EK)*1OlSuMgD1UsVfTnH#yv-9glG=?Px zRNB<(mJ=+bBtnuJ3)&KgaCm^<*Hsp`GrPSAx2>WRQRtM>7 z?4Ozv<3^l;$3L^azeFtPb&vsC;kXXs={Mo8n#yq)|krLgq|7sc$cjcdaHdz8q>SO@&m~{C$q$jW^{zI-=UKb|TL+F^iOCT@Mv<7sE}J$`LWU zwu#NGYtDIfR7lQ%)({E0bWh^FngJsGG8@brZE3bVtm{<9`Fw+6= OC`!6l7Vk;d