From 4119763e23f948ccf9f2d2c7658456d33b953eb4 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Sat, 24 May 2025 09:35:06 -0400 Subject: [PATCH] Lingo: Fix The Bearer's Pilgrimage Logic (#5005) --- worlds/lingo/data/LL1.yaml | 94 +++++++++++++++-------- worlds/lingo/data/generated.dat | Bin 149504 -> 149835 bytes worlds/lingo/data/ids.yaml | 8 +- worlds/lingo/datatypes.py | 1 + worlds/lingo/regions.py | 9 ++- worlds/lingo/utils/pickle_static_data.py | 2 + worlds/lingo/utils/validate_config.rb | 2 +- 7 files changed, 75 insertions(+), 41 deletions(-) diff --git a/worlds/lingo/data/LL1.yaml b/worlds/lingo/data/LL1.yaml index 6410ffea..4c41f323 100644 --- a/worlds/lingo/data/LL1.yaml +++ b/worlds/lingo/data/LL1.yaml @@ -4956,10 +4956,16 @@ Outside The Initiated: room: Art Gallery door: Exit - The Bearer (East): True - The Bearer (North): True - The Bearer (South): True - The Bearer (West): True + The Bearer (East): + static_painting: True + The Bearer (North): + static_painting: True + The Bearer (South): + static_painting: True + The Bearer (West): + - static_painting: True + - room: The Bearer (West) + door: Side Area Shortcut Roof: True panels: Achievement: @@ -5053,7 +5059,8 @@ - MIDDLE The Bearer (East): entrances: - Cross Tower (East): True + Cross Tower (East): + static_painting: True Bearer Side Area: door: Side Area Access Roof: True @@ -5084,7 +5091,8 @@ panel: SPACE The Bearer (North): entrances: - Cross Tower (East): True + Cross Tower (North): + static_painting: True Roof: True panels: SILENT (1): @@ -5128,7 +5136,8 @@ panel: POTS The Bearer (South): entrances: - Cross Tower (North): True + Cross Tower (South): + static_painting: True Bearer Side Area: door: Side Area Shortcut Roof: True @@ -5162,7 +5171,10 @@ panel: SILENT (1) The Bearer (West): entrances: - Cross Tower (West): True + Cross Tower (West): + static_painting: True + The Bearer: + door: Side Area Shortcut Bearer Side Area: door: Side Area Shortcut Roof: True @@ -5235,6 +5247,7 @@ The Bearer: room: The Bearer door: East Entrance + static_painting: True Roof: True panels: WINTER: @@ -5250,6 +5263,7 @@ The Bearer (East): room: The Bearer (East) door: North Entrance + static_painting: True Roof: True panels: NORTH: @@ -5270,6 +5284,7 @@ The Bearer (North): room: The Bearer (North) door: South Entrance + static_painting: True panels: FIRE: id: Cross Room/Panel_fire_fire @@ -5284,6 +5299,7 @@ Bearer Side Area: room: Bearer Side Area door: West Entrance + static_painting: True Roof: True panels: DIAMONDS: @@ -7108,6 +7124,8 @@ entrances: Orange Tower Third Floor: warp: True + Art Gallery (First Floor): + warp: True Art Gallery (Second Floor): warp: True Art Gallery (Third Floor): @@ -7125,22 +7143,6 @@ required_door: room: Number Hunt door: Eights - EON: - id: Painting Room/Panel_eon_one - colors: yellow - tag: midyellow - TRUSTWORTHY: - id: Painting Room/Panel_to_two - colors: red - tag: midred - FREE: - id: Painting Room/Panel_free_three - colors: purple - tag: midpurp - OUR: - id: Painting Room/Panel_our_four - colors: blue - tag: midblue ORDER: id: Painting Room/Panel_order_onepathmanyturns tag: forbid @@ -7159,15 +7161,8 @@ - scenery_painting_2c skip_location: True panels: - - EON - First Floor Puzzles: - skip_item: True - location_name: Art Gallery - First Floor Puzzles - panels: - - EON - - TRUSTWORTHY - - FREE - - OUR + - room: Art Gallery (First Floor) + panel: EON Third Floor: painting_id: - scenery_painting_3b @@ -7227,11 +7222,42 @@ - Third Floor - Fourth Floor - Fifth Floor + Art Gallery (First Floor): + entrances: + Art Gallery: + static_painting: True + panels: + EON: + id: Painting Room/Panel_eon_one + colors: yellow + tag: midyellow + TRUSTWORTHY: + id: Painting Room/Panel_to_two + colors: red + tag: midred + FREE: + id: Painting Room/Panel_free_three + colors: purple + tag: midpurp + OUR: + id: Painting Room/Panel_our_four + colors: blue + tag: midblue + doors: + Puzzles: + skip_item: True + location_name: Art Gallery - First Floor Puzzles + panels: + - EON + - TRUSTWORTHY + - FREE + - OUR Art Gallery (Second Floor): entrances: Art Gallery: room: Art Gallery door: Second Floor + static_painting: True panels: HOUSE: id: Painting Room/Panel_house_neighborhood @@ -7263,6 +7289,7 @@ Art Gallery: room: Art Gallery door: Third Floor + static_painting: True panels: AN: id: Painting Room/Panel_an_many @@ -7294,6 +7321,7 @@ Art Gallery: room: Art Gallery door: Fourth Floor + static_painting: True panels: URNS: id: Painting Room/Panel_urns_turns diff --git a/worlds/lingo/data/generated.dat b/worlds/lingo/data/generated.dat index 14f5570db1d17d881dcefbed05323ac89b10a701..f5eb3e069927f30aa069594bd3a98e6caa17e001 100644 GIT binary patch delta 31001 zcmb`w33!x65-@B}l9}8GBq2AGJK;EWo4sFO0F3(XT-H-vr9&dzNWcsl#OW`KDu;R>Fg1+M~#_NS~9w%?AlSI zM-JcHUf_$|!Y;dPiv8{`Zx`R;vs)6v`C(s9OhWi&m)+ZSN0%m`SgZ@RBqqDHAfT28 zC@m>e#>X@k@tqAte4IZYTll&mhu`g=!6!8I!|b`T0&Z^@BQCm28_J*bO?#fH+AmxYC$_aR8=rDTO#n6%lNr-B9rEO^ z>A%V8o9bA&$X?wvZ(j4l#rC4AxeMDC@r}0?h&K}~vApfJo&1+eV)?-VNqqZ~7)i{D zCH-aT&?RHADQ(Fd{5i4YTKIW#^zDy?vwHsVJu7V9n9D9J(yrmH_c~Z3-+OO5o5_#e z+h2#z8fKObJt+%s^ zU$JYixxI5nBCl^NrE=;4^|9^3b89wp`i;M z`MhprvfkKEuB{xT6LBd~NMz!wGN|QRm8sWwmd{^xd2u85+F_}2b=`wfAhRL0o<_UX`!ce3k#SYHY4V4fA*_onAt2(vbs0;Wy?ahwH?j;J0*)2Qv0` zj3weH=#72IN3I?pr8nmHIx2Yl137?k|LRm7Kv%~>FP=O0VXB*7dGA0Jg<4q zC2aZ|cdZ!)_^~UK`T8}P*xT`ZesWEc-rhxiVNHJV3>f$n3oZxA^oU`0U;Bcan-<=n z*c~2w*<~FO!}uL*`&+_d`K+~x;c_10V)<=r^RmLAT(4W!vu<)Me{pSIrU_+4Pn1l4 zac#aCV`NW^Jnrbs$F5sC?K5{vl{u-ArXr^#lGuG$nxb?hxJqpWI<%{2CTawiLUB!Q1KT@^i_S8Fr zT7o&}32zkeaX-fEtzE}E_*iJ|H9iJfV_p5DCG!>{SM7Wq@5?844eYB(Yw)_ML6AT` zwKR+0*EK3HFxl~qtqbS0*?l*|kG-J`wR0|g8_{Vhs{c({GIpT;(@`oZb=1{CW*NOF%N8s%r*@)BSa3=Jd=+J(ho4L2 zx9mvJr)n1O+))B$hj)yFvY&S-O)!ra?DRIsxejxCy#5-qv{)NmZojUtb!8u3>2lP0 z+{VhG4I#A3<&`VkEK$dH7U;b%_SH# zZ+t-MuPyxc2S)1JKD5%)=;jFzWXpl;wIAWx4X9)^^{(6=x10x^-Vk3yP{UzW4Q}^zbKhZguId`qjU>F(sg^Lz9Eu7QU!CZ=?2Yzi@VrK^z#ORjChx-g z8`A~=s$mCp#5m_Q&u?C^sLk$J*xb~m4be-RmrJV%l`NVTfBcP7wADQHx42R4-8eL= z$%GaAv)VGI@;h}5)0Pn*Wo|P5G1c5mKJ>8yYR-f#_m`5OD&IV&+P{&5=v zN-8#Wh%!QUXOwU5EsI+0Rr5?6?7ckaiT~YR@D_(A$dp~me7m1tzpJqKL6|5CZb9E9 zakt&STWwB<_?Nq{f`(js8~|UnCqrNONBOQjvz7YxIck;c^QqlweEeQikGJksd(;`e zeJ`rb<9pF82^jT%;zNHo2H^kQsAo^6>7D+I=R8@RAZ0Yf>#S5lh<*O!<$=)lp(k_o z9U&qC#B3n%9+S$$pF-=c=BfUG(DGEKzP1t*`0A&wO_Qxf`&?Io?()qC8$<~`k9iuk zq2p;a&AEK$)5Ef41)IOdX?MCM31Eb;n9;Qy&l7z2)2XS_=o*3)*y@_v7Qtbu%RK`O zeSZFFB!cZr)2SRqREq9RER8$%;f&4QmxZh4;GBMZ=e{@q?AeFsoHP5f;oqP3q2-hP zOl~MrA(sAwrRPBx4j*hULHei%3@WBa7&@3g_6#<2oc{gxnIcGMJd4Ku#Ah+x^6XHc zanrN8I-_n)pk49(XOpN`e*f4^9`jsuAT##4m_Vk*T(aRgoRq`QDQkB<|MEHPI{x{~ z0bcvO+CR7RMbEoOOU{PDF6dL@M5@&4b5_7!Y1W-#U{-q-g#Y__?55xa)!dWZ{Q}C> z@)rg~8w#>bdzF{IppI?_`58h<+K>C?r2VSuQQop2P1NoC(F%FpfWObb*?&2}2OU8C z#sdof4}9r?QIV2z*e2ZEz8`1!oPqE)R7~Uknq@lVR(_iw}-gZ8bV-YjqU9+Q8}ChwnQ$8i@V+APyq+km{sAcN`i8 z@WqD)1N_lLgY|Vake@j;9pEDlj{x}fhYNN1D8Bh{CBV-fM*Qd_1-jH$^a05p#8J8X zj-W}l?g*-%T}PA-t>edz;A#EGBWS9@0@f>DffWm=qW$Gie$z{R0BOZb<06b%60A6I z{F%-F^3o*081yn)%n1(_@OdxC>9j52cfMS$6i|6>gW6h20ZC<${fbf?OL+M!hOucz zju-v;v#+30aQ>AOj5L4*toj zRX}U;Yk1;E1MJS%l;U`t?|cpCykyxZ7eFvtd|bIp_p+B@KX4{-+-h-$r^n_{WrH7R!=PAWfI=QZ=v2i@m31peg0OuE`h0t(4PSKiK7%K{BXwMYK=b{Y^@e=?B| zJRSw9QO65mj5Cj`wSF~UecYv74Ocq79;#@bwhPBy`m|}>aRQG>?I+62Lj_AFK*%C~ zJ(V#ycr#0j68Ycr|#kg}dJ=P-cVAb%o9nacCf%lDEARL7k?>*`UZQ1!z@#@lGt# zIQ5ET9{(<|P3*XVrScK)_66R#-c8r}@f^SY-9mK`_Q45W9aKme9eg($ddPau&cA#& zT&7HWan^gd=XRgW;GOSMzmJaNV|5r9IYz;a!gd{>sIkYk=exIu3 z&h0YJPe@sGs2R}pdmu&}Y=9%ziQl6n!q|f_a9;ZH^!Jh7<0DyGl)3iajp)-s4RG`O zsJ3^$ua2Ta`G@acttjvZTwA>M)QG}>Y{X7)CT~-D)53*wn+>1VcpOL`KmUF*fALgb zX#Sm3Xv4;xR_nvX$DhW%==Re%C!0`}?(;JRs>JEu8_Q6MfK zpl9w^AE4ga`++jlHQxOJZVi!V(gLPRyH>H2o8~oDd59nXXg83(^emjF#Hvm?c@v zzk$J`5HH`r3VGVck>+k&c*)1A+x^`8@x=a8--i2Yz_C)%AWcKFV%qbu;^wRT#K+(T z!Bv{u8-?xKLGC%HY`}N;ymM&Y>^+y78xW94FP)9e{=g4WII{SS=Mp(Pk9JMT`O*N% z?b=7CMnB^#&%2PLv9pu;U(Tmx{nwVi<+-1@5xaCoI$!fi25CKgo_>HUAn;7~LeE8h z;uG}w+5b>Bz-YcrON*ci5h#FmGyPFXxJrfRHkQo0{xCF*7|PfEIT1whqd#Qnre$&x z5BZcxUw2hM@xl_;XK1gJ91oXPK-Z<+B3P%-{baHN@Uuj7^CKc9CodV`JU-_$T9!XGrHKVgSR_C3S!BRv-lo;bnpQ7( zX_^fG`Yrs&&(OXv``k|In*^y%yMmC5IwD~B!CL7qWMsZ54Y#E7L!XE8t)CBt>Ti9X zYWCv0n{N(MWve;+0;O;27b*P>>FcoiTj5e@j@p=o6gg`7{x4>!P0MTAv_$t(R?Nr$ zC2_FPO1pNg99Xok`8xCh1$F!gwpl9JuUHP>`Ikk?E#_@N2fcB+#b!tFnO{blJI6QLn!7C0cub`cj>e4)NH(PQ6Yl9dOASTN#Q|M_75SqtdWt5Mpvf=osKe zS4UHVgt#h#YJ_?{9(BOw*_RLG%$?DA=EhDhV)=Nq~qPH%f%x73>-fBd9W6?H986 z_1{Focpw#32WQ?uNhaU_O)QmU^3T3OL(6_4GuG;L);nBk5&(qS1uNHj$`#Fs$k$## zfA+o$YVODJvlo2I4P5W>1^MwqO;U-@=^!4abM6uy5lil@V3fP@!mql8mS-mq9b;`Op&Niu2#?)Wy5|KjhXbxwr&>S5uUM;Y#Q!kvxJspylV zG7%#ICTesHhi{6xolp~162os^a0$5Lz}4e6I_LM_3jW1^kfjUBxE>3Vir4%j3iY{O zY+j92eAX!DVgJlGYl%F$vju61eSGpi#{moP{pUcll5gWL{!^LdNBGD8MAOjz9h!i6 z^q=*eG7sP8zxr+Zk;!&U24(#324HN-r`vr)9=1P$?LzU5yNhO73$4Pb6AtfJOa z5j1BOL%ey^zlWG_3BT;6@xJ}|mH!^6U#40i*1+9E8CH3`=F1hs;Sb)@H~&4@O#64e zG+)U3{eT{*h98EQrze%K{XrR#!};DH&@B1q59pcGFU)mupU{uQ{lpLbcwlgNaJX{Nsc1qf(!??gOS4HwF*tE<%i{emqFW?z&oH0gaxoW0`|OhbeE-Eh5gRVM z4CDp=<8NOam1)o&e4D)(TQBA7o=V?P#Y&Vn>CzAq3`~HVl@hH!nq&lwH?5yh^Uc6^vyD&H!!N zHNAKAgxJK`R9!1tg6|_k>Ks8s3vmQr5kk50n)NcW`Mq~|SdJ_x=&F_PxfmtdEUavl zzGmUD8>EP>pqqPu!n_S`<9=S8wXo!|I;Uu6%u`@389A(M#25ngIt#amAt6kiPS1$C z5H{2!8?*Wg~tY*PqESYoYE6*46F@=!$u~HH`rJ~oS|;o zw0$soVIOKqRM)??NZ&wyzF(S%h+)8G#*aig9;G{YQGreISMv{$OyJZ;C6} z!U*$$O=Pg87a2Jp&cIw2@RKeIBiMkzdAcJ817GZmTJ04JTLa#b8<5Ze0YbM%uwgnk z|3~+d!QkI^_n^9>)>T)ovs^l`s+>lk6$0{rLikA)zl>xtGMy$KjAZ#{H-A;#Kd2y5ZGNw(p}bbjGr=M%8|rIa6>zRl^u8Fyz+czss#V6b00&bDA{f%?q97XJGsTo>maT7N&mnQSVtX`87Hgu}#5_eEu68wR)Ne?&5vd_AM6(QN zKQ@Mq4UE4{`;- zxFucu#=DJ3qrZuWI93i@z6u}B6D#9bmhLwO?G(r08b+{qmSWsET`|4d=ur%Y5?y^o z_!_Dm<^T{mg*wzY{{}$=AvSoX2(PHA^?1z&HXby5o=R76e2W!qGH2ipb~+t=>p@E? zp^%f<<5+70Yv1Pz-uJCl4Lw1jb%3VCEi-{Ztf;s=fhlWkn3$2k>eP_SU7l*MqdwSZ zuvR!K{0*uNq9qc}Tz+S{Hz3IbhLd)%6%g*HJDXr;g;jYQTx#c`de+f(jygE)>14{b zdMa1&4d`br(~cmT`mpp!835o<1+Dm-J}eji!5yr-59_Os%vSDoPILK#wnZ>eyuoDD zIeMz^a5#5W_`R+QGil)tzo*W0bwTvn+|C9tw}Zw2h}DQ0Jbr7v7eY&WA|hU}_?W_u zwMOyVzAQapa<^;aM0a1qQeGzh+Lu9yofw)3tD6o*;)X;vnRSX65?LkuIFeW@1W`b6 ztkx+Ku4Jj{df52!;V#V;Y3UY~^z{;W-UGjf$YOh$KZ4)mhf$(&SbzPuJ z|B=L!V@y~;U`jF@DLYDu4zB~LCl1N>Q^cxduq~*s6tO#*S!Fs^95>P_;;Up(cRCKF zBf@}hdi_XirPBv8r}E;eek@YqF72n~ zX+^X`h%?)p;5MSr@zq&T2UWMba=U=VoD?W*#H89 zk}AfhgT>M*jP@gB``U|XBKumF2u1N8*ui#8V#zSXchlJ*0IkbnIZ?KHS8cV|RY#3a zW{JX)0XUuF;$l`Uc4UC@(BY-I@SYdQHxB%?cUO3~+riMeox*e>as6W8^h_A9}nhB8DpXOT4+4q;MucMdNfgXz#I=4P{eF))Wkit8tVjd*o7tssDom4&6@p}s~(JyyJN zAIsgC!@{6oN)Ed`(&~o;UUdx?LB0mSqy?VHVSOR3cXKv}y1`r&l18!KTD};NOQNV_ zHRl=wuoKp4SV-FC8D=KP3ry(jn`$-`SofW*Lu5@qn{ zqK?v=E-j`)JvYCYx}|mVL@}*dN>8|hg$L?fEG99w51>T`dSfi~zG(o<1{BO?k~Dv! zU7Z;u2^hMJ42KqRH0K`zWpLF%78@JPce=zDYX{OX>JVIL3)jsmJq$Yfb|A@S>@6^} zC4*Rk?5#=T!M#yLIP`Y)AT}tU2`u;T<&y`iY3IXA*5p04QDx4e5@q7kR1``sKxjW z%nk=*XXg-Fr&uLA9L{x4pASw*5;@1_^TQ(ph1!28p;C)zR!bzim_HPx%$VK#h7zxc zhS(Bj)3;%j$8DU_mzR*{g9!a9(P^ZoLh*$XQupvv6b3d8bVJE9BPn*4vQUXw6gJWT zhm8s(N2??#<6*?Hb)761;`F43x?`B?B1yb7jP(uP1tBb%_Qx-Vu>vG_I0+B@TwO*I4%`4nWBj=+zzle0REFZt zWyUTnBS;`%w@ncXKoY`3!LLs{3-UB3!sn@T;`NNQ(?Dv&z-y*jqEHvr(xd&I1Zl98}8Gz#ZPRw~(@h9(9dN&J9GNz2zr2}g#)s$bCGy!2?#_vy>;hmmC5 zVGV4+J&O2x|0q@%1~D{15+u=l0EBGu)hK3D>CVwCTt@*)hlPhyI3QGj9I7+~isPe6 zYe0Iqh#jNSfb49jEyvag>z*+rZ6i!y+%&d8kR5S}iody>h1noX zEeL|Eib^xa8I_}K@G!u$AW)S65Puh_xosTj2&(z!IN}_pqr;&l2C5mDR23q*41lN` zPgNb0SsEzF_VFYk)X;0=iP4bGwz=mnXvP^RZH9qmO<;Y37n(X7R8GL*Z`=Z|h#?cf z8s8>XPGD&Ff>hhZu?b|@pP7KV-$0UEZw*S`2{CaZ?F3B|!S&WD)=p%Xn=lJVMkS`* zETfS%9>2W;eciNPbQ5F1B=AbXg3bbJz|={Fv|)8gH4RpmI53F_Y+ArlQKWyEL^~X2 zBWO*uEYn5`hXZW40Lju~>4lIWi$(R}6WtCnZP8lTSWZezS}l0N2bXNXS284?FK1Eu zBAHad28xmj$V+JrAJWNt?ryJt&^ zTijRz2ED721OT-;Xd!g+RG{YuNF>AR&y}PRq1Y)VILYjzv@oT=F{NEq22P*0mM8Gw zV+6^oVZT*Hat24EEGxcBK{!aGWZzuvevw_xl3+lis!FfF`nS(=A zI!gHilX2UGB}ln1DThj%wEBoC)GRQTvcH@{TdZ0jFHK=3J*_TQ3wtK`(`s2?e#1B$ z1VX|FWVo%w)LNE@mh8dtcykQ*4S^SA+%YjFrUOIxm1l)#PfQaZ*RmL_u@2JVb>s-g z#zpJ*3|prFeC5odUfm9xxU!DX1@+GI6tS$%@Ir{=b<)ymWU0|~t=fo}tso(If)+_` z(hQ0-wQk)0dsj~PxyjxIB~k*K?MpXl3d|`nyILG>AyMr`&os&7FiNGeaecw39knHX z=b__DNj-_XB5XxH8O|#ET0JRBTnr*|D(ThkJ#0X1WK{!1VS>{|>J79eqQmRqsfrmQ zwojG23)F}R^VPx4wNgS+HjKQ-S3bD5(A1jdk^Z5NSFr)Y=Ow!Zs7MxfdRaeMkC4t0 z`@LiWVHz3)W0M+Wk3jvJ>F|IW8Y8@MJ~LjUQ(B*dSFUHK?gVT0fW)H$xI!egjs+1@ zWQ+>5hh<`-pL{-qSLcx41j4KHc&p)cg6j80zp3Av2D}v1i)|yAk4zkNIN}NiLzCKyC3fSum%EbAvJI@ zs%Ijt)voGl^CVZ)G*nCp03xkEx62PPE!ZD6oq2`PbfgvT&hRyc-dJDT-W_+${>XJc5 zth|c4l(j%#>ZiWar=aZIRU{r*1`DdeCp|fsjUxZ8U-m$_GiDgLF%j@A&F26eOVWhJ zQLu;C*E%4e4rzx5#Mv1}zanlnEewPMKOA(tBuZ->pulB~EOGnQsJp%VL5@dbMrN{;(>vQ zV$U_Co=9M4&1P2JTBN)_laS7~x!_q5$sCBe07UeW6Vk+ehWMk?jN(F}$3TOUNX*+p zbRRgjD2C2a72(EC7gVZs`yAR`F&$;A0v%o>9T^CSiGUY`7+NOv5`s21le|GP+eSfE zC}PcI?W6lAu#?{3%=!k~r=8PTKUH2OK5k}7!R7b2uoP8p?8GClWw{FYozOSoo32$1 z{zUVMo!62;fLkC}oV%7>Bf7M*>xlKRbEQYh!@%d-;X<+QI@ULVWB}|v{eA?57sN7E zb#=Aq1R-^rb`L#7CzRahxN*P{Ghk@8^z?Wc&tiZ-hBl;g2cTBvo262s%KhFzRfI@J z!Sw%M*eThx2!KTy=I(+V0<>AIo=ckr^qtD{qvJ%p#=^v_bICw41Ji(vff}2r+gEpJ zq(W)$=tYG`TI*bux*{bUb@4#51JQ}3o=~Q2As8pA#CX;9L=Bl6Yi5$PkwxHj!UrL! z4tWpb=dqaH_n^{w(lZL%NE(G12ixM{QX;3)9rJo#x~P)9^LpN$sgh6UF?+ZY3VzU= zA&TaM*L0hxo=K4_3oA(RTrwqyh}^MB!OL+Zv>Y0El$huNRPR z#&m3?4CjH%4H_sN*}h-El1o*ehF8Pgaml@B7&*~(vl<_epal+Zu*8y9ia)@|Bw*&i z3m1Bff(~hwju01Hfzt%Q&%Izln%LIPBEv}Th57jjJQGQag6n;C>5A`0FxCN{r9i;2 zNVpL!pirM%|1J|W1`s+wz-t*%dn1cSx-i{#^k(!RU}QTh$@J=t8YhLI&ec?-XHhkinB1!M&5Adk6w$F5I)wePKQuK+K8p#ZNHzdt zQ{t+{41FV5QFJaQ<$!QNmk)qIcKsf@%tK8n(kjUoz)RM+yY%+dxf6YK(7FEp2aG|g zrg#2S4`c+xIP@nzaR2IeR@6A^%H`&dLm;1h^$9^ZJSB>uY5EViQlb)H%_Q-DPsm=JzS;^wZ+oZPv zJ{b`$d90rX;XPD7R?#03QBZv8)#7cz}e3g_l+uAeP+0 za(cR#fKn=mLcTzzSj61PitX~zQc*{^e2R3bK{n|wkodRnWc^bW4jD-S!GPuzPImuW z_4istBIuR0x)bSP5#Fsl zFd!mkIoWOC{~sVGEte+`9Uc7$0528~ET=}HQlU7voZ>}bLxDIA z*9Rq*BkXWJTffA(BK+6wj@K z^GS#C7Rd~bL=PoCM*<+!#EnrlK<|&tm=PFw18<`wVzJn|in^wa5jwyS4{*C-JQXyM zEM|7FWE(yAkrfDn4B6em2BBY_v?XNF|8LX~v8#!L3Xmiwt)_0!qt~}x8yba zApGQtJ!`1P1aK&ZJ1X%rnot>#b7CTDDYyzka;UvdmT$%HfMMH+>~Z^~*9BuytPp8v zlvIMi(=LEsN^x#2jgdT-exJStcapap+YvK6=`s?^^Q;gnLfv;tKQ|Vi?UdDVOSP_} zIVZoHaY8mcx_P?g7Zk74u3bS)>KuBU?$a$VG|mwP(iax68{csWMJ=ho9AfC;mU5A#_}p{WPuuZ+NO2JirxUjT{D zSWCYocufqCBB$8h9#e>^h>5kN#dN@T(u^QZv7LiRf$rt3NIoaW>LRg=&h2 zI4ixNwQKU}RZ#~-S4*!yqFV|5thlhjxFjKqp0KsJp=N^c;Z+bZ*kTWyunM^EAkoCu z2g=qjL2K9KQ>`L+wkuy`>Fr8#z7&7kNJ4;ZNOBNg8)GJi9%|{;@SE0&nB37 z@VQ&LKbe;R1ZaqaN_9mDQiNe#(hCi-sbcVETC}j3z@H69AJT|t+N4zZ?jy1hoRm&) zt=z8hIxAQ1dsyCKE=8-0BJ0|;!Q#+n)K%oW{BkpP4oQf4g@1EwA!A0ALN}1kwUvz+ zRwmOqV#gL#U<5|RqfqdwL!o5dhn_G%$ri5r=swa=8tS+hq%=$+px&*_E2ZXocv+?j z45Hih$6;X1;|nk30;o>$=6&*lp1jQXq6-Sp?O~(mT#y0#*xpBfz6JVSzRm(TsBm1O zczG0#=V29E0#`+F9Pzpw(%TPOB`dyNf0YFxuJY1E>VJH8C0hdb3%3 z*WVL_(qkzdCsMtXf;`eITDQ~gK!e({9WS$RF2vSf={(PgRIj6GX0l<^xV9Glr1Qcn=zWqTFE=7^FGFPhk{+>wrlXK~Ny7l~_yaUz8vVHk$nj4+k9#nX zp70=@3gs;tK1zbh*km7kVT7gu7Bnv?Ib; zFpPcRBdj!0J!%QB^myb;4y?EUw#?2)q^}Uu`yY{_0cp4nlh0cuUaD?Qe=6c1CC41a zB`#t-CW-$q_6`wfMS7yv!`4)XSmzct3CXK`3YiP5q|G#Zv!IVMCFdwy&1mYS5q zG1@UkBP)(k%qR*g2_y~n7U^*?zzr2kNJ)dI7*|dZgNsFa7$HK%iN|TYgkf}5XdPzs z1!>tC(SF+#mt0NpCs={pr#}@3pJ16i&Uc?b!SV;uzK_zTO&o4EAwuc(liB)%Gu+r+ z%%1z7YM6s$z`h!dhrVZaq3ayAHpON1-A%?q_a2rTEqA@UKmllrM9XfvwSa;w@z`z| z5-wwADjVR7p&-*x1o!^%7DnFQQV_v}Jv3dIhW*1qTLR*Vt$U;bfr3bDxl?%*pbWJt zp$y(j`a|v~ctKD4crRIp)cBsgQn!H>8``e*ixG!66J2n9ihgW7Z-|M%qedt__jkq( zWlTgB?(Zrj0gL0K;iJTrP6+Q;K@Hu%Bb8B#*PU<&<*kM2SEPX&b3aKAa!TKBO7D7- z)Ct{o)&?AK{l!nR09q^17dRv_l#H7AJ?BMhi0nx700%+mW;6{xq;h9KG+9v~l z@#HjJ-U;8@-{^+Z0=$r&%UyUw@vcr5#UyCI@J6$&YFY1x&bKAUPlj zHD1F34vEx`7ig|A4YywM4IFm!0)^L-fYPfsg+F0G(MbFF^)gL+H@#%Tis0M8hUgia z%;Szq1_-@Y`T2mM;}sC?4VCUA2ti&c27pHoC{sdz^a5D8Hy9WZfk#cm%NZ}qEfsJ3 zSH4Izqm2iK7Q}0Mr<1TCARayh?6>=BrrT@quPp$@2o=c(NghC0^CSH5jz_L(D!S<) znZA(DPJ%~p@br#C3&HfLfXHbQLJIe)fk!(|Q}BwwpdKKZd?A^K*kqNy{SaLOqjV(1 zxFN#YYd5*nS&;z!=&G+RcI+O0v_bULp2%+son~BIYP%5++M&x zhL7$jPvZ0QVVZw(!-r>Z=DU{kty^{Nl7Mw%2 zzr_Yy*Bbzbb-PR-ej5r09Rpf^YZNAmg~!-n+dcw};urS!70(@G1Fc6)7(WAs^=%0# zeH&)~15@Fex1sP)5&#`cvi?n`ZO38So#18$3f;%qkf?_!jpHoD4;hQC$6koGy%kb6Ts*V5S1etosXZ+6iZI9SJ!%!t zpI~uTjQoMlj{{O3#_7nK(GRz*^I zg^>_~A6$kmb-fGvjB0Qx`VI6_`8NcD2*4w#EENxTLoDFoLY0S4EWDpA&UVApKURc5 z5%vzOq5U#l@(vqieO0FCzr#jbPssFR?|^vxTc-bl=`Uq^;Jc7ME7RA%%gU`wi>b{g zF}+Bpe|VP_#mGwutzr-rm%PVHVx%Wjn>U0&^WS4*tmyXxiXMNDm5T`{nazrRHvs(b z9;=9vo-*=%0cgreRvshWRoXQYYs*PCGDiA=w8tgrqmyjBHK~LevHzYG#p(w?EnyhJ zru`nqh?Y6D*!6qnj#@-%5-QOe3+8gv`z#?weosLATNxo1zt1L%NvGg~{cN=*O~jmH z!;=&17q(uv5WfD2Q(V>Dv=F}6)7B;KsJ5i0b)=XJJ@8kpu4}gYTW@Y&C{Dl6GQ^tq z;VTYToMP2%tJrypC13gQXy|7v{4>RZ;?xl_Jn+Yn0%akx%=Fin0%f7H%=BlMWSNLR z&62HpdeCVQ0!rT}e5Zl^dV2k7mQz9LZAb&7wxawkbK!%H`kzM#lu8QWgO2bwDU83K zAdAKQAF-4H0aQs;@ZVVol!o2I>vtu_1prp;SGd0e=KQ+A5@*w>XtP-T0V|WFZWgb7 zz=o;x#ShpBl^%PB4Ud=jID{~4s*RtYkRsL=TKX7G?K%^vGX5OP6EPpMc-2NL0_;Vm zo_C%Dt7RFWt3n0Z46TdaDATSWFJ0I4@a;y!|nK*t~V zkz)Mz|H^nO{m+cwPK=k0ZWjkXViN{Y2f}Eyts|ngwQZ67%N|I!eCsW-MDbbJkM#8P zvn*4lcZl20!lp{_9b%7xvqPLa3p)V8X>#&J=XcCz@EE2jCk8rzKP;qX5N0YrR*(8u zFqpAiaf8DWmY_p|=Pd!>LC_cbjaFdt@J5SKVd<@IGFXInU*tfgfe~DCT#v~NfaN+2rB8KB+Bb>1^Q_;}0E(1+88Q@r zl2pQ|9Wy6)cxxL^l${XD+z>ea`-3`_~9_9qmd8}my96sD^+O_ zJiGX&(h_3`XU8XO-01F>7%c<61}XRteu%GSZcDQ^6cYzpZfrTF*|C5e3yBEa+p@By zx@E?`Kd?1@*??!({*x^ZkJwP;x{UsNCj25C>z~fI%#FsvXv@41HbndwXQ^dFo^i!n z;612*LYO?_P3vXt|LuEjV9$$N5-cO0c|O5n%gELj8`W#;t)93z*pd`hbJTiSn|L9? z(*K!=A(lrikzo_)XrS39i04Zzd6w`A;#`Skv?X$aNGrAEl|)gw76U(%!(WHWTC83p z9zhWR(h@KgiK#vl#DY>wW=vm%BmkscOPnA!m0IS{Or~mD3YH{NL#Yyyj*ujRWDulC z%R*2xHrO9i{V-+6R0^iDF_ng?989HSDp$-IW*NRT4**NLv;u_N0p6w+N=Pw6vI#Ok zLIxouhaf{Fqy!<+1Syq};RwkkNSTC;L`WV%MiHb)8-t*H0BK_rF*9vXaH$GOpS$9yXMymr-}G73w$43ILj=zXHD0kzd*zata25moK$6oIA3NN zQ9TnOH3XSO=-M?1nG6v4Jfws)BV-Cet|bV(Wz+x8%;Y)(&lNL9SVk_rUgFP3{CX-_ zAR#v(WGX>!l#n)r_z1E{LT*BcpCC6&$YO*v5ad<~xeX!H2(m;%mLjB)Aj>cfQgSDP zt{~7|5^^^}rW52I30aPiD+#hfLRKN<7X;~$kTnRoiXdwxWF10g5M(_;inJ~ST@9d) z=yI`cq@}2G145brqHV;~HJB2ZnvJPVn3@Brc5O2xf!zBL(hLv?K_f_!wq5)*(vp+9 z14~*6cc)(R0D|UUE2*wP)^!j1T6+oN6(MjPrj89 ze@BSgQ;7FVfV62(>s6mY&}{%(sy&OzC4~PRm1-{_HlP5X=d`AYs=kUxJH(PJ%{OTUx3f5Fe>4b<1a zCFDnhY$V7}1S!%kB1iy8yKEw)HerfkYBQwTH47v`QbQ54g(`+ghz%k45hPqfA`!9` eAbD+Clmx{fXd5BLN=RS%lQi*}x5iq^V*U@2@Ci=< delta 30985 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 None: regions[pilgrimage_region_name] = Region(pilgrimage_region_name, world.player, world.multiworld) # Connect all created regions now that they exist. - allowed_entrance_types = EntranceType.NORMAL | EntranceType.WARP | EntranceType.CROSSROADS_ROOF_ACCESS + allowed_entrance_types = EntranceType.NORMAL | EntranceType.WARP | EntranceType.CROSSROADS_ROOF_ACCESS | \ + EntranceType.STATIC_PAINTING if not painting_shuffle: # Don't use the vanilla painting connections if we are shuffling paintings. @@ -156,11 +157,11 @@ def create_regions(world: "LingoWorld") -> None: regions[from_room].connect(regions[to_room], f"Pilgrimage Part {i+1}") else: connect_entrance(regions, regions["Starting Room"], regions["Pilgrim Antechamber"], "Sun Painting", - RoomAndDoor("Pilgrim Antechamber", "Sun Painting"), EntranceType.PAINTING, False, world) + RoomAndDoor("Pilgrim Antechamber", "Sun Painting"), EntranceType.STATIC_PAINTING, False, world) if early_color_hallways: connect_entrance(regions, regions["Starting Room"], regions["Color Hallways"], "Early Color Hallways", - None, EntranceType.PAINTING, False, world) + None, EntranceType.STATIC_PAINTING, False, world) if painting_shuffle: for warp_enter, warp_exit in world.player_logic.painting_mapping.items(): diff --git a/worlds/lingo/utils/pickle_static_data.py b/worlds/lingo/utils/pickle_static_data.py index 740e129b..7f39b798 100644 --- a/worlds/lingo/utils/pickle_static_data.py +++ b/worlds/lingo/utils/pickle_static_data.py @@ -138,6 +138,8 @@ def process_single_entrance(source_room: str, room_name: str, door_obj) -> RoomE entrance_type = EntranceType.WARP elif source_room == "Crossroads" and room_name == "Roof": entrance_type = EntranceType.CROSSROADS_ROOF_ACCESS + elif "static_painting" in door_obj and door_obj["static_painting"]: + entrance_type = EntranceType.STATIC_PAINTING if "painting" in door_obj and door_obj["painting"]: PAINTING_EXIT_ROOMS.add(room_name) diff --git a/worlds/lingo/utils/validate_config.rb b/worlds/lingo/utils/validate_config.rb index 2a765fbc..e2704226 100644 --- a/worlds/lingo/utils/validate_config.rb +++ b/worlds/lingo/utils/validate_config.rb @@ -2,7 +2,7 @@ # the file are consistent. It also checks that the panel and door IDs mentioned # all exist in the map file. # -# Usage: validate_config.rb [config file] [map file] +# Usage: validate_config.rb [config file] [ids path] [map file] require 'set' require 'yaml'