ofs | hex dump | ascii |
---|
0000 | 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 00 00 0b 91 00 00 09 3b 08 02 00 00 00 42 84 3d | .PNG........IHDR.......;.....B.= |
0020 | 6b 00 00 00 01 73 52 47 42 01 d9 c9 2c 7f 00 00 00 09 70 48 59 73 00 00 0b 13 00 00 0b 13 01 00 | k....sRGB...,.....pHYs.......... |
0040 | 9a 9c 18 00 06 0c 49 49 44 41 54 78 9c ec dd eb af 54 f5 a1 ff f1 df 3f 70 9e fa 07 fc 1e f8 e0 | ......IIDATx.....T.....?p....... |
0060 | 3c e8 b3 93 34 39 e9 93 26 a6 31 27 a6 31 26 8d 31 36 1a 89 06 89 1a d1 20 d5 14 44 d0 a2 28 5a | <...49..&.1'.1&.16.........D..(Z |
0080 | a4 a0 e2 56 54 50 ab 45 50 6e 22 82 22 4a a1 de ef 5a f1 0a 1e ae 56 50 51 bc 54 f7 f9 d6 2f fb | ...VTP.EPn"."J...Z....VPQ.T.../. |
00a0 | eb ea cc b0 d6 ec 3d 97 b5 66 cd eb 95 77 08 15 98 bd f6 cc ec bd 67 cf 7c ba f6 ff 03 00 00 00 | ......=..f...w........g.|....... |
00c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
00e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
0100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
0120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
0140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
0160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
0180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
01a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
01c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
01e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
0200 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
0220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
0240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
0260 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
0280 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
02a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
02c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
02e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
0300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
0320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
0340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
0360 | 00 00 00 00 00 00 60 dc fe ff cf 7e 36 81 4e 38 f1 c4 d4 7f 9c 70 42 a8 ec f7 03 00 00 00 00 00 | ......`....~6.N8.....pB......... |
0380 | 00 00 80 c1 71 c6 8c 19 67 5f 73 4d 4f fb d9 49 27 95 fd 5e 02 00 00 00 00 00 00 00 50 25 36 2b | ....q...g_sMO..I'..^........P%6+ |
03a0 | 00 00 00 00 00 00 00 00 f4 5b 1f 36 2b e1 67 09 95 fd 5e 02 00 00 00 00 00 00 00 50 25 36 2b 00 | .........[.6+.g...^........P%6+. |
03c0 | 00 00 00 00 00 00 00 f4 9b cd 0a 00 00 00 00 00 00 00 00 fd 66 b3 02 00 00 00 00 00 00 00 40 bf | ....................f.........@. |
03e0 | 15 6e 56 ce 5f b0 c0 66 05 00 00 00 00 00 00 00 80 6e b2 59 01 00 00 00 00 00 00 00 a0 df 6c 56 | .nV._..f.........n.Y..........lV |
0400 | 00 00 00 00 00 00 00 00 e8 37 9b 15 00 00 00 00 00 00 00 98 b8 f3 6f be 79 d6 aa 55 b1 2b 57 ae | .........7............o.y..U.+W. |
0420 | 8c cd 5c b1 a2 77 a5 b7 92 2d fd e9 ef 1f 7c 30 76 c5 9f ff 1c bb fc be fb 7a 5a 7a 43 d9 d2 9f | ..\..w...-....|0v........zZzC... |
0440 | fe 6e f9 f2 d8 65 cb 96 a5 a6 dd 75 57 ef ba 74 e9 d2 d8 25 23 23 17 2f 59 12 bb e8 d6 5b 63 17 | .n...e.....uW..t...%##./Y....[c. |
0460 | 2e 5e 1c bb 60 e1 c2 54 b8 11 63 93 6f ba 69 d2 bc 79 5d ef 9c b9 73 43 61 42 71 d6 9c 39 b1 33 | .^..`..T..c.o.i..y]...sCaBq..9.3 |
0480 | 67 cd 4a 85 e9 46 ec f4 2b ae e8 43 bf 99 3e 3d 75 ea 25 97 c4 7e 7d d1 45 b1 53 a6 4c 89 9d 3c | g.J..F..+..C..>=u.%..~}.E.S.L..< |
04a0 | 79 72 af 0b 37 47 bc 99 62 e9 c6 4a 5d b5 7a 75 f3 2d 98 ad e5 7d 2f db 2f 7f fb db 9f ff fa d7 | yr..7G..b..J].zu.-...}/./....... |
04c0 | e3 ed bf 4e 3e 39 f6 b3 93 4e 2a bd ff fc c5 2f 52 27 fe fc e7 55 28 2c 81 62 27 9c 78 62 e9 fd | ...N>9...N*..../R'...U(,.b'.xb.. |
04e0 | c7 09 27 c4 ca fe 52 00 00 00 00 00 00 00 d0 77 61 24 51 f8 c2 b9 fa 59 5a ed 4c 60 0f 14 fe d5 | ..'...R........wa$Q....YZ.L`.... |
0500 | d4 91 91 ae 97 66 34 3d 1d eb b4 59 76 3c 34 7d f9 f2 d2 3b de f8 e9 86 2d 5b 96 bd ff 7e fe 69 | .....f4=...Yv<4}...;....-[...~.i |
0520 | 54 c2 a8 25 ff 9d 0d 23 a4 34 c7 69 bf 53 a7 4e 0d a5 df 74 58 b8 9e c3 71 4e b8 39 6b d6 34 97 | T..%...#.4.i.S.N...tX...qN.9k.4. |
0540 | fd 0b ed 6c e6 ce 9d 37 ef b4 69 d3 ba 55 76 f6 54 7a 69 8c d5 b7 d5 d7 38 36 61 dd b8 ff 74 5e | ...l...7..i..Uv.Tzi.....86a...t^ |
0560 | ba 63 f7 61 88 d6 4e bf 9a 34 29 f6 cb 33 cf ac 42 bf 38 fd f4 d8 04 f6 6d bd 28 6d e6 aa 36 9b | .c.a..N..4)..3..B.8.....m.(m..6. |
0580 | 2b 7d 2d d7 b0 99 33 9b 03 00 00 00 00 00 f8 17 9b 95 3a 15 96 13 2d cf e7 a1 fe 37 7b cd 9a 7b | +}-...3...........:...-....7{..{ |
05a0 | 3f f8 20 7f 5c 12 ce bf 92 3f 6a 09 1b 82 d2 5f 81 0e ef 4b e9 77 ec 2a 5c 0f 43 d2 7f 9f 76 5a | ?...\....?j...._...K.w.*\.C...vZ |
05c0 | 2a 8d 21 ca 2d 8d 33 4e 3a fb ec 2a 94 36 2b a5 af 67 62 e9 e4 52 13 d8 b7 f5 a2 ec d8 a8 f4 c1 | *.!.-.3N:..*.6+..gb..R.......... |
05e0 | 53 28 3b 56 eb e2 f4 ad 1e 9b b9 ec 6c ae 22 55 6d 36 97 bd 6f 97 fe c1 9e dd cc 55 64 36 97 fd | S(;V........l."Um6..o......Ud6.. |
0600 | 5c 5d fa d7 af 58 a5 66 73 4e 35 d7 e6 66 ce 6c 0e 00 00 00 00 86 9d cd 4a 9d b2 59 a9 4e 36 2b | \]...X.fsN5..f.l........J..Y.N6+ |
0620 | 5d ac 0a d7 83 24 a9 d7 55 6d 36 97 dd 67 94 3e 98 cb 6e e6 2a 32 9b 4b 9b 39 b3 b9 fc cd 9c d9 | ]....$..Um6..g.>..n.*2.K.9...... |
0640 | dc c0 6d e6 c2 75 55 fa fd c7 6c ae 2b 9b b9 33 a6 4f 0f 9d fe 63 0d 37 71 2c e7 47 cd 36 fc b4 | ..m..uU...l.+..3.O...c.7q,.G.6.. |
0660 | d9 5f 9d 7b 6e 2c fb 69 39 fc 20 d7 58 38 8c f8 c5 2b be 5d b3 b9 01 3a d5 9c d9 1c 00 00 00 54 | ._.{n,.i9...X8...+.]...:.......T |
0680 | 82 cd 4a 9d b2 59 a9 4e 36 2b 5d ac 0a d7 83 24 49 92 ea 5a d5 36 73 66 73 5d d9 cc fd 69 dd ba | ..J..Y.N6+]....$I..Z.6sfs]...i.. |
06a0 | 37 46 47 fb d3 9b ad 6a fe 6b af b5 ea d5 1f 7e f8 a9 ef bf 8f bd f2 cf 7f a6 5e fe ee bb d8 4b | 7FG....j.k.....~..........^....K |
06c0 | df 7e 7b ac 6f be 89 bd 78 f4 68 ec 85 af be fa a9 2f bf fc a9 23 47 62 cf 7f f1 c5 73 99 9e 6d | .~{.o...x.h....../...#Gb....s..m |
06e0 | ea 6f 99 76 7c fe 79 6c fb 67 9f 1d eb d0 a1 d8 5f 3f fd 34 b5 ed 1f ff 48 3d f3 c9 27 b1 a7 0f | .o.v|.yl.g......_?.4....H=..'... |
0700 | 1e 3c d6 81 03 3f b5 6f 5f 6c eb de bd b1 a7 f6 ec d9 d2 aa 27 9a da fc f1 c7 a9 4d bb 77 a7 1e | .<...?.o_l..........'......M.w.. |
0720 | df b5 eb 58 1f 7d 14 db f8 c1 07 b1 c7 de 7f 3f b6 e1 bd f7 52 8f be fb ee 4f bd f3 4e 6c fd df | ...X.}.........?....R....O..Nl.. |
0740 | ff 1e 5b fb d6 5b cd ad c9 b4 7a ac 47 de 7c 33 f6 f0 1b 6f a4 56 bd fe fa b1 5e 7d 35 f5 d0 2b | ..[..[....z.G.|3...o.V....^}5..+ |
0760 | af fc d4 4b 2f c5 56 bc f8 62 ec 2f 2f bc 10 7b f0 b9 e7 1e 78 f6 d9 d0 9f 77 ec 08 dd bf 7d fb | ...K/.V..b.//..{....x....w....}. |
0780 | bd db b6 c5 96 8f b5 6c ac 7b c6 ba 3b d3 5d cf 3c 13 5b ba 75 6b ea ce a7 9e 8a dd f1 e4 93 b1 | .......l.{..;.].<.[.uk.......... |
07a0 | 91 27 9e 48 dd be 69 53 6c c9 e3 8f c7 6e db b0 21 75 eb a3 8f de b2 6e 5d 68 d1 da b5 7f 5a bb | .'.H..iSl....n..!u.....n]h....Z. |
07c0 | 76 e1 ea d5 a1 05 0f 3f 9c fa e3 58 37 8d 75 63 a6 1b 56 ad 8a 5d ff d0 43 b1 79 7f f9 4b ec ba | v......?...X7.uc..V..]..C.y..K.. |
07e0 | 07 1e c8 36 f7 fe fb 63 7f b8 f7 de d8 35 cb 96 c5 ae be fb ee d8 ec a5 4b af ba e3 8e d8 ac db | ...6...c.....5..........K....... |
0800 | 6f bf f2 b6 db 66 de 76 db ef 6f b9 e5 8a 4c 97 8f 35 7d ac cb 32 4d 5b b4 28 76 e9 c2 85 a9 a9 | o....f.v..o...L..5}..2M[.(v..... |
0820 | 0b 16 c4 2e be f1 c6 d8 45 37 dc 10 bb f0 ba eb 52 53 e6 ce 4d 9d 7f f5 d5 b1 f3 ae bc 32 75 f6 | ........E7......RS..M........2u. |
0840 | e5 97 c7 ce 9c 3e 3d 15 07 73 69 33 97 9d cd 35 6f e6 b2 b3 b9 ec 72 ae 79 33 97 9d cd 65 37 73 | .....>=..si3...5o.....r.y3...e7s |
0860 | 71 36 97 be a2 95 3e 9b cb 6e e6 cc e6 6c e6 00 00 a0 5d 36 2b 75 ca 66 a5 3a d9 ac 74 b1 2a 5c | q6....>..n...l....]6+u.f.:..t.*\ |
0880 | 0f 92 24 49 92 06 a8 eb 57 ae 7c 69 74 54 aa 7e 2f 67 7a a5 02 bd 5a b1 5a 8e bd 4a ac 6f 63 b8 | ..$I....W.|itT.~/gz...Z.Z..J.oc. |
08a0 | 09 cc e6 d2 ef db dc cc fd db 6c 6e 6c 33 97 9d cd e5 6c e6 b2 b3 b9 7f 5b ce 8d 7f 33 97 9d cd | ..........lnl3....l.....[...3... |
08c0 | b5 d8 cc 65 66 73 69 39 d7 72 33 d7 72 36 b7 b5 69 33 17 6a 73 33 d7 b0 9c 1b d7 66 ee b8 b3 b9 | ...efsi9.r3.r6..i3.js3.....f.... |
08e0 | b1 cd dc bf 6a 6f 36 97 36 73 2d 67 73 3f 6d e6 32 cb b9 f1 6e e6 d2 6c ee be ed db 43 2d 37 73 | ....jo6.6s-gs?m.2...n..l....C-7s |
0900 | 69 36 97 dd cc b5 9c cd a5 cd 5c cb d9 5c da cc 1d 6f 36 17 37 73 71 36 97 b3 99 6b 39 9b 6b de | i6........\..\...o6.7sq6...k9.k. |
0920 | cc 65 67 73 d9 e5 5c 3b 9b b9 e6 d9 5c d8 cc 35 cc e6 d2 66 ae fd d9 5c f3 66 ae 70 36 97 36 73 | .egs..\;....\..5...f...\.f.p6.6s |
0940 | 93 67 cf 4e 9b b9 49 33 66 94 fd b2 12 00 40 57 d9 ac d4 29 9b 95 ea 74 cd fa f5 0f ed de 9d 3f | .g.N..I3f.....@W...)...t.......? |
0960 | 49 b1 59 69 b3 2a 5c 0f 92 24 49 92 06 28 9b 15 49 92 ba 5b 98 d6 95 7e 0c 8a 85 49 5f 98 d1 94 | I.Yi.*\..$I..(..I..[...~...I_... |
0980 | fd ca 12 00 40 f7 d8 ac d4 29 9b 95 ea 14 36 2b 77 ed dc e9 3c 2b 5d a9 0a d7 83 24 49 92 a4 01 | ....@....)....6+w...<+]....$I... |
09a0 | ca 66 45 92 24 d5 35 9b 15 00 a0 6e 6c 56 ea 94 cd 4a 75 b2 59 e9 62 55 b8 1e 24 49 92 24 0d 50 | .fE.$.5....nlV...Ju.Y.bU..$I.$.P |
09c0 | 36 2b 92 24 a9 ae d9 ac 00 00 75 63 b3 52 a7 7e b7 7c 79 e9 5b 0d c5 6c 56 ba 58 15 ae 07 49 92 | 6+.$......uc.R.~.|y.[..lV.X...I. |
09e0 | 24 49 03 94 cd 8a 24 49 aa 6b 36 2b 00 40 dd d8 ac d4 29 9b 95 ea 64 b3 d2 c5 aa 70 3d 48 92 24 | $I....$I.k6+.@....)...d....p=H.$ |
0a00 | 49 1a a0 6c 56 24 49 52 5d b3 59 01 00 ea a6 70 b3 72 e1 e2 c5 bf 9d 35 6b c2 9d 35 67 4e 73 e9 | I..lV$IR].Y....p.r.....5k..5gNs. |
0a20 | 25 f9 73 ae bd b6 cf 9d 3b 6f 5e 73 e7 cd 9f 1f 9b 7c d3 4d 7d ee fc 9b 6f 6e d9 05 0b 17 c6 c2 | %.s.....;o^s.....|.M}...on...... |
0a40 | f5 9f ba 64 64 a4 c3 cd ca f9 0b 16 9c 35 7b 76 4e e1 46 49 97 f6 fb 07 1f 8c cd 5c b1 22 16 7e | ...dd........5{vN.FI.......\.".~ |
0a60 | 1f 7e fc d0 a4 79 f3 fa d6 79 37 dc 90 fa e9 4a 5b b0 a0 ac a6 2c 5c 98 0a 1f 3b 0d 5d ba 74 69 | .~...y...y7....J[....,\...;.].ti |
0a80 | 6c ea c8 c8 dc 8d 1b ef df bd fb b4 69 d3 4e 9d 3a 35 d6 bc 59 b9 6c d9 b2 fc bb 47 15 b6 1a 36 | l...........i.N.:5..Y.l....G...6 |
0aa0 | 2b 92 24 49 92 06 2e 9b 15 49 92 54 d7 6c 56 00 80 ba 29 dc ac 84 17 ce f3 cf 15 a1 be 15 36 40 | +.$I.....I.T.lV...)...........6@ |
0ac0 | 9d 6f 56 f2 9f d7 fb cd f4 e9 f9 c7 70 ce dc b9 a5 3f f9 58 91 6e 7a fa e9 0e bb f5 a5 97 f2 6b | .oV.........p....?.X.nz........k |
0ae0 | ff a2 6e dc ba 35 35 7f cb 96 d4 f5 4f 3e 19 9b b7 79 73 ec ba 4d 9b 62 d7 6e dc d8 4e d9 4b 6b | ..n..55.....O>...ys..M.b.n..N.Kk |
0b00 | a7 ec 91 e4 d4 f0 af 1a 0e b2 a1 70 d2 9a 59 ab 56 75 d2 95 2b 57 66 cb ce b0 62 d9 8f a3 30 cc | ...........p..Y.Vu..+Wf...b...0. |
0b20 | 8a 85 0f a8 de 15 16 4b b1 b4 79 32 cd 91 24 49 92 ba 95 cd 8a 24 49 aa 6b 36 2b 00 40 dd d8 ac | .......K..y2..$I.....$I.k6+.@... |
0b40 | 0c 50 36 2b 95 aa f3 cd 8a 94 2d 7c 84 96 7e af 96 24 49 92 ea 91 cd 8a 24 49 6a d9 cb 65 1f 40 | .P6+......-|..~..$I..extends "res://scripts/load.gd"
const EXCLUDED_PAINTINGS = [
"ascension.tscn",
"ascension_ne.tscn",
"ascension_nw.tscn",
"ascension_se.tscn",
"ascension_sw.tscn",
"dan_L1_gate.tscn",
"frame.tscn",
"scenery_0.tscn",
"scenery_1.tscn",
"scenery_2.tscn",
"scenery_3.tscn",
"scenery_4.tscn",
"scenery_5.tscn",
"pilgrim.tscn"
]
func _load():
global._print("Hooked Load Start")
var apclient = global.get_node("Archipelago")
# Override the YOU panel with the AP slot name.
if self.get_node_or_null("Panels/Color Arrow Room/Panel_you") != null:
self.get_node("Panels/Color Arrow Room/Panel_you").answer = apclient.ap_user
for node in get_tree().get_nodes_in_group("text_you"):
if "text" in node:
node.text = apclient.ap_user
elif "value" in node:
node.value = apclient.ap_user
for node in get_tree().get_nodes_in_group("answer_you"):
if "answer" in node:
node.answer = apclient.ap_user
# Create "The Wanderer".
set_gridmap_tile(-4.5, 6.5, 56.5, "MeshInstance4")
set_gridmap_tile(-3.5, 6.5, 56.5, "MeshInstance18")
set_gridmap_tile(-3.5, 6.5, 57.5, "MeshInstance5")
var door_scene = load("res://nodes/door.tscn")
var door_script = apclient.SCRIPT_doorControl
var wanderer_entrance = door_scene.instance()
wanderer_entrance.name = "Door_wanderer_entrance"
wanderer_entrance.translation = Vector3(7.5, 5, 53)
wanderer_entrance.rotation = Vector3(0, -PI / 2, 0)
wanderer_entrance.scale = Vector3(1, 1.5, 1)
wanderer_entrance.set_script(door_script)
wanderer_entrance.panels.append("../../../Panels/Tower Room/Panel_wanderlust_1234567890")
get_node("Doors/Tower Room Area Doors").add_child(wanderer_entrance)
var wanderer_achieve = get_node("Panels/Tower Room/Panel_1234567890_wanderlust")
wanderer_achieve.get_parent().remove_child(wanderer_achieve)
get_node("Panels/Countdown Panels").add_child(wanderer_achieve)
var countdown_scene = load("res://nodes/panel_countdown.tscn")
var wanderer_cdp = countdown_scene.instance()
wanderer_cdp.name = "CountdownPanel_wanderer"
wanderer_cdp.panels = [
"../../Panels/Tower Room/Panel_wanderlust_1234567890",
"../../Panels/Orange Room/Panel_lust",
"../../Panels/Orange Room/Panel_read",
"../../Panels/Orange Room/Panel_sew",
"../../Panels/Orange Room/Panel_dead",
"../../Panels/Orange Room/Panel_learn",
"../../Panels/Orange Room/Panel_dust",
"../../Panels/Orange Room/Panel_star",
"../../Panels/Orange Room/Panel_wander"
]
wanderer_cdp.translation = wanderer_achieve.translation
wanderer_cdp.rotation = wanderer_achieve.rotation
get_node("CountdownPanels").add_child(wanderer_cdp)
wanderer_achieve.translation = Vector3(-51, -33, 35) # way under the map
# Set up The Master to be variable.
var old_master_cdp = get_node("CountdownPanels/CountdownPanel_countdown_16")
var cdp_auto_scene = load("res://nodes/panel_countdown_auto.tscn")
var new_master_cdp = cdp_auto_scene.instance()
new_master_cdp.name = "AP_variable_master"
new_master_cdp.replace_with = old_master_cdp.replace_with
new_master_cdp.panels = "../../Panels/Countdown Panels"
new_master_cdp.maxlength = apclient._mastery_achievements
new_master_cdp.translation = old_master_cdp.translation
new_master_cdp.rotation = old_master_cdp.rotation
get_node("CountdownPanels").add_child(new_master_cdp)
old_master_cdp.queue_free()
# Configure AN OTHER WAY.
var another_cdp = get_node("CountdownPanels/CountdownPanel_level2_0")
if apclient._level_2_requirement > 1:
var new_another_cdp = cdp_auto_scene.instance()
new_another_cdp.name = "AP_variable_another"
new_another_cdp.replace_with = another_cdp.replace_with
new_another_cdp.panels = another_cdp.panels
new_another_cdp.translation = another_cdp.translation
new_another_cdp.rotation = another_cdp.rotation
new_another_cdp.maxlength = (apclient._level_2_requirement - 1)
new_another_cdp.nested = true
get_node("CountdownPanels").add_child(new_another_cdp)
another_cdp.replace_with = ""
another_cdp.queue_free()
else:
var another_replacement = another_cdp.get_node(another_cdp.replace_with)
another_replacement.translation = another_cdp.translation
another_replacement.rotation = another_cdp.rotation
another_cdp.queue_free()
# This is the best time to create the location nodes, since the map is now
# loaded but the panels haven't been solved from the save file yet.
var gamedata = apclient.get_node("Gamedata")
var panels_parent = self.get_node("Panels")
var location_script = apclient.SCRIPT_location
for location_id in gamedata.panel_ids_by_location_id.keys():
if not (gamedata.classification_by_location_id[location_id] & apclient._location_classification_bit):
continue
var location = location_script.new()
location.ap_id = location_id
location.name = "AP_location_%d" % location.ap_id
self.add_child(location)
var panels = gamedata.panel_ids_by_location_id[location_id]
location.total = panels.size()
for panel in panels:
var that_panel
if panel.begins_with("EndPanel"):
that_panel = self.get_node("Decorations").get_node(panel)
else:
that_panel = panels_parent.get_node(panel)
that_panel.get_node("Viewport/GUI/Panel/TextEdit").connect(
"answer_correct", location, "handle_correct"
)
# HOT CRUSTS should be at eye-level, have a yellow block behind it, and
# not vanish when solved.
var hotcrusts = panels_parent.get_node("Shuffle Room/Panel_shortcuts")
hotcrusts.translation.y = 1.5
hotcrusts.get_node("Viewport/GUI/Panel/TextEdit").disconnect(
"answer_correct", hotcrusts, "handle_correct"
)
set_gridmap_tile(-20.5, 1.5, -79.5, "MeshInstance9")
# TRANS RIGHTS should be bottom white, like it used to be.
var trans_rights = panels_parent.get_node("Shuffle Room/Panel_secret_secret")
trans_rights.translation.y = 0.5
# Move LOW/LOW back to where it used to be.
var panel_low = panels_parent.get_node("Entry Room/Panel_low_low")
var sign_low = $Decorations/PanelSign/sign21
panel_low.translation = sign_low.translation
panel_low.rotation = sign_low.rotation
sign_low.queue_free()
# Randomize the panels, if necessary.
var rng = RandomNumberGenerator.new()
rng.seed = apclient._slot_seed
# Remove opaque wall in front of FOURTH.
set_gridmap_tile(-71.5, 1.5, -64.5, "MeshInstance18")
# Move The Lab's OPEN out of the wall.
panels_parent.get_node("Chemistry Room/Panel_open").translation.x = -87.001
# Rotate ZERO toward the front, and remove the black door.
panels_parent.get_node("Backside Room/Panel_zero_zero").rotation_degrees.y = 180
get_node("Doors/Count Up Room Area Doors/Door_zero_hider_3").queue_free()
# Block the roof access to The Wondrous.
for x in range(0, 3):
for z in range(0, 3):
set_gridmap_tile(-95.5 - x, -3.5, -44.5 - z, "MeshInstance4")
# Block visibility of RAINY from the roof.
set_gridmap_tile(-88.5, 4.5, -41.5, "MeshInstance8")
set_gridmap_tile(-89.5, 4.5, -41.5, "MeshInstance4")
if apclient.confusify_world:
# Remove welcome back / color hallway / sunwarp indicators.
get_node("Decorations/Signs/Welcome Back Signs").queue_free()
if apclient._panel_shuffle != apclient.kNO_PANEL_SHUFFLE:
# Make The Wondrous's FIRE solely midred.
set_gridmap_tile(-76.5, 1.5, -73.5, "MeshInstance18")
# Reduce double/triple length puzzles in Knight/Night.
set_gridmap_tile(24.5, 1.5, 11.5, "MeshInstance18")
set_gridmap_tile(25.5, 1.5, 11.5, "MeshInstance18")
set_gridmap_tile(47.5, 1.5, 11.5, "MeshInstance18")
if apclient._panel_shuffle == apclient.kREARRANGE_PANELS:
# Do the actual shuffling.
var panel_pools = {}
for panel in gamedata.panels:
if not panel_pools.has(panel["tag"]):
panel_pools[panel["tag"]] = {}
var pool = panel_pools[panel["tag"]]
var subtag = "default"
if panel.has("subtag"):
subtag = panel["subtag"]
if not pool.has(subtag):
pool[subtag] = []
var panel_node
if panel["id"].begins_with("EndPanel"):
panel_node = self.get_node("Decorations").get_node(panel["id"])
else:
panel_node = panels_parent.get_node(panel["id"])
pool[subtag].append(
{
"id": panel["id"],
"hint": panel_node.text,
"answer": panel_node.answer,
"link": panel["link"] if panel.has("link") else "",
"copy_to_sign": panel["copy_to_sign"] if panel.has("copy_to_sign") else ""
}
)
for tag in panel_pools.keys():
if tag == "forbid":
continue
var pool = panel_pools[tag]
for subtag in pool.keys():
pool[subtag].sort_custom(self, "sort_by_link")
var count = pool[pool.keys()[0]].size()
var iota = range(0, count)
var order = []
while not iota.empty():
var i = rng.randi_range(0, iota.size() - 1)
order.append(iota[i])
iota.remove(i)
for subtag in pool.keys():
for i in range(0, count):
var source = pool[subtag][i]
var target = pool[subtag][order[i]]
var target_panel_node = panels_parent.get_node(target["id"])
target_panel_node.text = source["hint"]
target_panel_node.answer = source["answer"]
for sign_name in target["copy_to_sign"]:
self.get_node("Decorations/PanelSign").get_node(sign_name).value = source["hint"]
# Change the answer to the final puzzle in the art gallery based on the
# puzzles that were shuffled into the constituent places.
var new_answer = panels_parent.get_node("Painting Room/Panel_eon_one").answer
new_answer += " "
new_answer += panels_parent.get_node("Painting Room/Panel_path_road").answer
new_answer += " "
new_answer += panels_parent.get_node("Painting Room/Panel_any_many").answer
new_answer += " "
new_answer += panels_parent.get_node("Painting Room/Panel_send_use_turns").answer
panels_parent.get_node("Painting Room/Panel_order_onepathmanyturns").answer = new_answer
# Handle our other static panels after panel randomization, so that the old
# values can enter the pool, if necessary.
set_static_panel("Entry Room/Panel_hi_hi", "hi")
set_static_panel("Entry Room/Panel_write_write", apclient.my_version)
set_static_panel("Entry Room/Panel_same_same", str(apclient._slot_seed))
set_static_panel("Entry Room/Panel_type_type", "victory")
var victory_condition = "unknown"
if apclient._victory_condition == apclient.kTHE_END:
victory_condition = "the end"
elif apclient._victory_condition == apclient.kTHE_MASTER:
victory_condition = "the master"
elif apclient._victory_condition == apclient.kLEVEL_2:
victory_condition = "level 2"
set_static_panel("Entry Room/Panel_this_this", victory_condition)
set_static_panel("Entry Room/Panel_hidden_hidden", "hewwo")
set_static_panel("Entry Room/Panel_hi_high", "goode", "good")
set_static_panel("Entry Room/Panel_low_low", "serendipity", "luck")
set_static_panel("Shuffle Room/Panel_secret_secret", "trans rights", "human rights")
# Finish up with The Wanderer.
wanderer_achieve.text = "12345656"
wanderer_achieve.answer = "the wanderer"
wanderer_achieve.achieved_text = "the wanderer"
wanderer_cdp.replace_with = "../../Panels/Countdown Panels/Panel_1234567890_wanderlust"
get_node("Doors/Tower Room Area Doors/Door_wanderlust_start").panels = [
"../../../Panels/Countdown Panels/Panel_1234567890_wanderlust"
]
if apclient._early_color_hallways:
var painting_scene = load("res://nodes/paintings/dan_L1_gate.tscn")
var mypainting_script = apclient.SCRIPT_mypainting
var exit_painting = painting_scene.instance()
exit_painting.set_name("color_exit_painting")
exit_painting.translation.x = -98.75
exit_painting.translation.y = 1
exit_painting.translation.z = 3.5
exit_painting.rotation_degrees.y = -90
var exit_mps = mypainting_script.new()
exit_mps.set_name("Script")
exit_mps.orientation = "west"
exit_painting.add_child(exit_mps)
$Decorations/Paintings.add_child(exit_painting)
var enter_painting = painting_scene.instance()
enter_painting.set_name("color_enter_painting")
enter_painting.translation.x = 4.5
enter_painting.translation.y = 1
enter_painting.translation.z = 6.75
var enter_mps = mypainting_script.new()
enter_mps.set_name("Script")
enter_mps.orientation = "south"
enter_mps.target = exit_mps
enter_painting.add_child(enter_mps)
$Decorations/Paintings.add_child(enter_painting)
# Randomize the paintings, if necessary.
if apclient._painting_shuffle:
var paintings_dir = Directory.new()
var all_paintings = []
if paintings_dir.open("res://nodes/paintings") == OK:
paintings_dir.list_dir_begin()
var file_name = paintings_dir.get_next()
while file_name != "":
if file_name.ends_with(".tscn") and not EXCLUDED_PAINTINGS.has(file_name):
all_paintings.append(file_name.trim_suffix(".tscn"))
file_name = paintings_dir.get_next()
paintings_dir.list_dir_end()
var pd = Node.new()
pd.set_name("AP_Paintings")
self.add_child(pd)
var classes = {}
for painting in apclient._paintings_mapping.values():
if not classes.has(painting):
var i = rng.randi_range(0, all_paintings.size() - 1)
var chosen = all_paintings[i]
classes[painting] = chosen
all_paintings.remove(i)
var randomized = []
for painting in classes.keys():
var painting_class = classes[painting]
instantiate_painting(painting, painting_class)
randomized.append(painting)
for source_painting in apclient._paintings_mapping.keys():
var target_painting = apclient._paintings_mapping[source_painting]
var painting_class = classes[target_painting]
var new_source = instantiate_painting(source_painting, painting_class)
new_source.target = pd.get_node(target_painting).get_node("Script")
randomized.append(source_painting)
var remaining_size = classes.size() / 2
if remaining_size >= all_paintings.size():
remaining_size = all_paintings.size()
var remaining = []
for _i in range(0, remaining_size):
var j = rng.randi_range(0, all_paintings.size() - 1)
remaining.append(all_paintings[j])
all_paintings.remove(j)
for painting in gamedata.paintings.keys():
if randomized.has(painting):
continue
var chosen_painting = remaining[rng.randi_range(0, remaining.size() - 1)]
instantiate_painting(painting, chosen_painting)
# We need to make some changes to the Art Gallery. The player should always
# have access to the backroom, but they shouldn't have access to ORDER until
# getting the fifth floor, so will move the backroom door. Also, the
# paintings in the backroom should only show up as the player gets the
# progressive art gallery items.
var backroom_door = get_node("Doors/Tower Room Area Doors/Door_painting_backroom")
backroom_door.translation.x = 97
backroom_door.translation.y = 0
backroom_door.translation.z = 39
backroom_door.scale.x = 2
backroom_door.scale.y = 2.5
backroom_door.scale.z = 1
for i in range(2, 6):
var painting_path = "Decorations/Paintings/scenery_painting_%db" % i
var painting_node = get_node(painting_path)
var rotate = painting_node.rotate
var target_path = painting_node.target_path
painting_node.set_script(load("res://scripts/painting_eye.gd"))
painting_node.rotate = rotate
painting_node.target_path = target_path
painting_node.move_to_x = painting_node.translation.x
painting_node.move_to_z = painting_node.translation.z
painting_node.translation.x = 88
painting_node.translation.z = 39
var ref_painting_path = "Decorations/Paintings/scenery_painting_%dc" % i
var ref_painting_node = get_node(ref_painting_path)
painting_node.key_path = ref_painting_node.key_path
painting_node._ready() # shows an error about looked_at being double connected
# If door shuffle is on, we need to add an extra door to The Fearless.
if apclient._door_shuffle:
var fearless_door = get_node("Doors/Naps Room Doors/Door_hider_5").duplicate()
fearless_door.name = "Door_hider_new1"
fearless_door.translation.y = 5
get_node("Doors/Naps Room Doors").add_child(fearless_door)
# Set up notifiers for each achievement panel, for the tracker.
var notifier_script = apclient.SCRIPT_notifier
for panel in gamedata.panels:
if "achievement" in panel:
var panel_node = panels_parent.get_node(panel["id"])
var script_instance = notifier_script.new()
script_instance.name = "Achievement_Notifier"
script_instance.key = "Achievement|%s" % panel["achievement"]
panel_node.add_child(script_instance)
if "hunt" in panel and panel["hunt"] and not (gamedata.classification_by_location_id[panel["loc"]] & apclient._location_classification_bit):
var panel_node = panels_parent.get_node(panel["id"])
var script_instance = notifier_script.new()
script_instance.name = "Hunt_Notifier"
script_instance.key = "Hunt|%d" % panel["loc"]
panel_node.add_child(script_instance)
# Attach a script to every panel so that we can do things like conditionally
# disable them.
var panel_script = apclient.SCRIPT_panel
for panel in gamedata.panels:
var panel_node
if panel["id"].begins_with("EndPanel"):
panel_node = self.get_node("Decorations").get_node(panel["id"])
else:
panel_node = panels_parent.get_node(panel["id"])
var script_instance = panel_script.new()
script_instance.name = "AP_Panel"
script_instance.data = panel
panel_node.add_child(script_instance)
apclient.connect("evaluate_solvability", script_instance, "evaluate_solvability")
# Hook up the goal panel.
if apclient._victory_condition == apclient.kTHE_MASTER:
var the_master = self.get_node("Panels/Countdown Panels/Panel_master_master")
the_master.get_node("Viewport/GUI/Panel/TextEdit").connect(
"answer_correct", apclient, "completedGoal"
)
elif apclient._victory_condition == apclient.kLEVEL_2:
var level_2 = self.get_node("Decorations/EndPanel/Panel_level_2")
level_2.get_node("Viewport/GUI/Panel/TextEdit").connect(
"answer_correct", apclient, "completedGoal"
)
else:
var the_end = self.get_node("Decorations/EndPanel/Panel_end_end")
the_end.get_node("Viewport/GUI/Panel/TextEdit").connect(
"answer_correct", apclient, "completedGoal"
)
# Create the effects node.
var effects_script = apclient.SCRIPT_effects
var effects = effects_script.new()
effects.set_name("AP_Effects")
self.add_child(effects)
# Create the multiplayer node, if needed.
if apclient.enable_multiplayer:
var multiplayer_node = apclient.SCRIPT_multiplayer.new()
multiplayer_node.ghost_mode = true
add_child(multiplayer_node)
# Hook up the scene to be able to handle connection failures.
apclient.connect("could_not_connect", self, "archipelago_disconnected")
# Proceed with the rest of the load.
global._print("Hooked Load End")
._load()
# Process any items received while the map was loading, and send the checks
# from the save load.
apclient.mapFinishedLoading()
func _load_user_textures():
# We are using this function as a hook to process queued Iceland Traps
# because it happens after the environment gets set.
var effects_node = get_tree().get_root().get_node("Spatial/AP_Effects")
effects_node.activate()
._load_user_textures()
func sort_by_link(a, b):
return a["link"] < b["link"]
func set_static_panel(name, question, answer = ""):
if answer == "":
answer = question
var node = self.get_node("Panels").get_node(name)
node.text = question
node.answer = answer
func instantiate_painting(name, scene):
var apclient = global.get_node("Archipelago")
var scene_path = "res://nodes/paintings/%s.tscn" % scene
var painting_scene = load(scene_path)
var new_painting = painting_scene.instance()
new_painting.set_name(name)
var old_painting = self.get_node("Decorations/Paintings").get_node_or_null(name)
if old_painting != null:
new_painting.translation = old_painting.translation
new_painting.rotation = old_painting.rotation
var mypainting_script = apclient.SCRIPT_mypainting
var mps_inst = mypainting_script.new()
mps_inst.set_name("Script")
var gamedata = apclient.get_node("Gamedata")
if gamedata.paintings.has(name):
var pconfig = gamedata.paintings[name]
mps_inst.orientation = pconfig["orientation"]
if pconfig["move"]:
mps_inst.move = true
mps_inst.move_to_x = old_painting.move_to_x
mps_inst.move_to_z = old_painting.move_to_z
mps_inst.key = old_painting.key
self.get_node("AP_Paintings").add_child(new_painting)
new_painting.add_child(mps_inst)
if old_painting != null:
old_painting.queue_free()
return mps_inst
func set_gridmap_tile(x, y, z, tile):
var gridmap = self.get_node("GridMap")
var mesh_library = gridmap.mesh_library
var mapvec = gridmap.world_to_map(gridmap.to_local(Vector3(x, y, z)))
gridmap.set_cell_item(mapvec.x, mapvec.y, mapvec.z, mesh_library.find_item_by_name(tile))
func set_small_gridmap_tile(x, y, z, tile):
var gridmap = self.get_node("GridMapSmall")
var mesh_library = gridmap.mesh_library
var mapvec = gridmap.world_to_map(gridmap.to_local(Vector3(x, y, z)))
gridmap.set_cell_item(mapvec.x, mapvec.y, mapvec.z, mesh_library.find_item_by_name(tile))
func archipelago_disconnected(reason):
var messages_node = self.get_node("Messages")
messages_node.showMessage(reason)
|