From b2995d4ca92cd70ade2b7e2a1477628345daa330 Mon Sep 17 00:00:00 2001 From: claude Date: Sat, 24 Oct 2026 10:18:17 +0200 Subject: [PATCH] =?UTF-8?q?M7:=20sv=C3=A5righet,=20tid,=20po=C3=A4ng,=20de?= =?UTF-8?q?buffar,=20egna=20kort=20och=20sittplatsval?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - sim/stats.go: Stats (fart, törst, fokus, toalett, tur), debuffar som multiplikatorer, Profile som följer med mellan banor och räknar ned - sim.Run: tidsgräns och maxantal missade tåg förlorar banan; poängformel (tid mot par, pengar, sällskapets mätare, utforskat, avdrag); debuffar tjänas av många steg, lång tid, tom matmätare och seedad otur vid kiosken; stats påverkar fart, mätartakter, läsning och hjälptid - egna kort (individualCards): Member.Card, spärren kräver allas saldo och drar från alla, automaten frågar vems kort, biljetter köps åt alla - sittplatsval (seatSelection): Ticket får ett sittplatssteg med seedade önskemål (fönster/gång/sida/bredvid); missnöjda ger mätar- och poängavdrag - level: maxMissedTrains, individualCards, seatSelection; bana 003 Shibuya (svårighet 3, fyra i sällskapet) och 002 med tidsgräns och sittplatser; ordboken utökad; generatorn är spec-driven - game: tid kvar/missade i HUD, debuffar i meny/HUD/resultat, poäng och förlustorsaker på resultatet, vyer för personval och vagn, skript-pick, flaggan -debuffs; HUD och resultat komprimerade för fyra i sällskapet - plan (Björn 2026-10-24): flera våningar med trappor som M9a, egna kort och sittplatsval som svårighetsinställningar i M7 – i spelbeskrivning, roadmap, testplan - docs/README/wiki med sittplatsbilden Co-Authored-By: Claude Fable 5.1 --- README.md | 20 +- cmd/metro-puzzle-jp/main.go | 3 +- doc/img/level-001.png | Bin 18555 -> 18507 bytes doc/img/level-002.png | Bin 18215 -> 18457 bytes doc/img/menu.png | Bin 14542 -> 15390 bytes doc/img/platform.png | Bin 23052 -> 23003 bytes doc/img/result.png | Bin 26139 -> 26459 bytes doc/img/ride.png | Bin 21551 -> 21677 bytes doc/img/seats.png | Bin 0 -> 22421 bytes doc/img/sign-help.png | Bin 25363 -> 25321 bytes doc/img/sign-learned.png | Bin 25568 -> 25529 bytes doc/img/sign.png | Bin 25851 -> 25807 bytes doc/img/ticket.png | Bin 21965 -> 22032 bytes doc/img/topup.png | Bin 19761 -> 19707 bytes doc/img/words.png | Bin 16169 -> 16161 bytes doc/mal-och-tester.md | 10 +- doc/plan.md | 4 +- doc/roadmap.md | 66 ++++++- doc/spelbeskrivning.md | 20 +- internal/game/game.go | 17 +- internal/game/input.go | 24 +-- internal/game/minigame_view.go | 80 ++++++++ internal/game/scene_level.go | 81 +++++++- internal/game/scene_menu.go | 9 +- internal/game/scene_result.go | 40 ++-- internal/game/script.go | 11 +- internal/level/level.go | 35 ++-- internal/level/level_test.go | 15 ++ internal/minigame/minigame.go | 3 +- internal/minigame/minigame_test.go | 111 +++++++++-- internal/minigame/ticket.go | 152 +++++++++++++-- internal/minigame/topup.go | 26 ++- internal/sim/party.go | 35 +++- internal/sim/run.go | 216 +++++++++++++++++++-- internal/sim/run_test.go | 239 +++++++++++++++++++++++- internal/sim/stats.go | 121 ++++++++++++ internal/sim/stats_test.go | 45 +++++ internal/sim/wallet.go | 15 +- resources/data/levels/002-shinjuku.json | 92 ++++----- resources/data/levels/003-shibuya.json | 118 ++++++++++++ resources/text/en.json | 38 +++- resources/text/jp-dictionary.json | 50 +++++ resources/text/sv.json | 38 +++- tools/shots/main.go | 10 + 44 files changed, 1567 insertions(+), 177 deletions(-) create mode 100644 doc/img/seats.png create mode 100644 internal/sim/stats.go create mode 100644 internal/sim/stats_test.go create mode 100644 resources/data/levels/003-shibuya.json diff --git a/README.md b/README.md index f805b11..19e6384 100644 --- a/README.md +++ b/README.md @@ -10,12 +10,12 @@ Storyn följer några polare på semester i Japan, från landningen på flygplatsen till avresan. Efter storyn låses ett oändligt läge och New Game+ upp. Hela speldesignen finns i [doc/spelbeskrivning.md](doc/spelbeskrivning.md). -**Status:** M6 klar (2026-10-24) – japanska skyltar och ordinlärning, -lämmeltåget med sina behov, minikarta med dimma, och nu pengarna: tågkortet -fylls på vid automaten, svårare banor kräver rätt pappersbiljett, kortet kan -ligga i telefonen (snabbare, men batteri och omskanningar), fulla tåg kräver -att man tränger sig på, och på tåget måste man kliva av på rätt station. -Nästa är M7: svårighet, tid, poäng och debuffar. Se +**Status:** M7 klar (2026-10-24) – tre banor med stigande svårighet. +Japanska skyltar och ordinlärning, lämmeltåget med sina behov, minikarta med +dimma, tågkort, biljetter och minispel, och nu svårigheten: tidsgräns, max +antal missade tåg, en poängformel, debuffar som följer med mellan banor, och +inställningarna egna kort per person och sittplatsval med sällskapets +önskemål. Nästa är M7b: tågen ska synas och kännas när de kommer och går. Se [doc/roadmap.md](doc/roadmap.md). ![Skylt på japanska med delvis översättning](doc/img/sign.png) @@ -39,6 +39,13 @@ på japanska. ![Automaten](doc/img/ticket.png) +På de svåraste banorna har alla i sällskapet egna kort som måste ha saldo, +alla behöver biljett, och när biljetten är köpt ska sällskapet placeras i +vagnen efter sina önskemål: fönster eller gång, vänster eller höger sida, +eller bredvid en viss person. Missnöjda blir sura och drar ned poängen. + +![Sittplatsval](doc/img/seats.png) + Ditt sällskap följer efter i en rad. Mätarna uppe till höger visar mat, dryck och toa för var och en; faller de får någon ett behov som saktar ned er alla tills ni hittar en kiosk eller en toalett. Minikartan i hörnet visar @@ -124,6 +131,7 @@ metro-puzzle-jp -smoke 90 # öppna fönster, avsluta efter 90 bil metro-puzzle-jp -know 改札,番線 -points 3 # förkunskap och språkpoäng (tester/skärmdumpar) metro-puzzle-jp -seed 7 # fast seed för händelser, läsning och minispel (tester/skärmdumpar) metro-puzzle-jp -phone -card 0 # kortet i telefonen; kortets startsaldo (tester/skärmdumpar) +metro-puzzle-jp -debuffs sore_feet,tired # debuffar från start (tester/skärmdumpar) metro-puzzle-jp -script "move right 4; shot bild.png; quit" # skriptläge, se internal/game/script.go metro-puzzle-jp -version ``` diff --git a/cmd/metro-puzzle-jp/main.go b/cmd/metro-puzzle-jp/main.go index c7f4521..c146010 100644 --- a/cmd/metro-puzzle-jp/main.go +++ b/cmd/metro-puzzle-jp/main.go @@ -24,6 +24,7 @@ func main() { seed := flag.Uint64("seed", 0, "fast seed för banorna, 0 = slumpad (tester/skärmdumpar)") phone := flag.Bool("phone", false, "ha tågkortet i telefonen från start") card := flag.Int("card", -1, "kortets startsaldo i yen, -1 = standard (tester/skärmdumpar)") + debuffs := flag.String("debuffs", "", "debuffar från start, kommaseparerade, t.ex. sore_feet,tired (tester/skärmdumpar)") version := flag.Bool("version", false, "skriv ut version och avsluta") flag.Parse() @@ -32,7 +33,7 @@ func main() { return } - g, err := game.New(game.Options{LevelID: *levelID, SmokeFrames: *smoke, Script: *script, KnownWords: splitWords(*know), Points: *points, Seed: *seed, Phone: *phone, CardYen: *card}) + g, err := game.New(game.Options{LevelID: *levelID, SmokeFrames: *smoke, Script: *script, KnownWords: splitWords(*know), Points: *points, Seed: *seed, Phone: *phone, CardYen: *card, Debuffs: splitWords(*debuffs)}) if err != nil { log.Fatalf("kunde inte starta: %v", err) } diff --git a/doc/img/level-001.png b/doc/img/level-001.png index 219975fc73dd72c16021047c45519e4b43725e39..75b532a36f7ddcf35179f638f1eb54bdb7a4f0b0 100644 GIT binary patch literal 18507 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 bK@gpg%QT{zm;L1*`KTzU%NJg||MdR=K9tKO diff --git a/doc/img/level-002.png b/doc/img/level-002.png index 50d6f117cc4977b117748c4f098f96ae7485c530..856059746a2cb30ab46700c34ca034ba8e8fe77a 100644 GIT binary patch literal 18457 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 J{0lb%{vX!jp%efB diff --git a/doc/img/menu.png b/doc/img/menu.png index 321ed4132fdb17388e39a52de78caf3eff3de4ae..2c2c0ef4e800e472c7cd9d114bcea9e575c64309 100644 GIT binary patch delta 4933 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 CCh}1L delta 3838 zcmcInc{r478^;*NHVA`e$Rx?u*oJYCNhewmN7;oG8ex!q89Rp%Z-mNDX<~GcCRwKw zDVdHn9AoU+g(ef`<1E*AI$!6yzCXV2{XN%nzrWx0+{=64&p&T|@LS)TvK*MK$8tFm zgwlslP8W%(B|3B@>I>vfKex%`pP*sS#~d|TFSfNsr#pB=4`L~Zqq znKWty$T?*omV)FGyC(RhJr&3$}940aPwglmmE( zH&G0#gs{Rq!rRcR+g#!)e+r)}@sIQqv|dWM_Lt|I4+Jcf;4&c+GLaQn`>zlF+q1n% z44Mg%0(>~Q389bwUija>&KMm4Jk zlh}bmtj#9;I=m&H57$?X#x~T?v_%=Im6A7*vI#|jsPlFm|&lP5)M^!#?W=_mOe|LPS z{HItrUA4_6jsi&(hRPz0FgNfLzX`5=!fBsN8?ISLLY5HdvR{L}5_%Fx^^*2!L zCppM0v6`eG?l9w9Ooy*CxbI{rxURf8WksGeB{nQSx=*|(fabPm6iN+O!w-zW78B|b zacR9hS++1`Ujj_oM4@--L?@nJoremBJwOV;XoHSd4AJj56t#wCF3gH;eJXz80k)Pm*2A(Fk)05lV(uZOK z^)xvb@>{P}BdH5~Lytgh+y?Y@g+fBbiBOWyvy}h?H*(4UbEZ8E5HYo z;%;D0!bHtJXtT_Uu%lA&k(?=Hb3Xotz3TiiRF)#18gH1dlhe1v$nrh3W+RBR>M$OH z>t)&^w~T4k0Spy7kG}uajeE}RCK{yoC*au-RYz&%B5DLrdyEtaB=Ak#yHu!y^^cln z>tfFXX>xlIpj5;kiX#TgV$8E>tYeHE8sDvJi@Vo45_#l82#1L(U;AoGRkJifX~$}- z^4X4+D)pbRe5H_89i*-M69-bXU7N98uvwMRbsAFE_p9AztJ^Q;P9FR^I};v-XzG3s zfm$wkJ5XhGKh|@P&uZ+S-G*?x-l(+u>4y%1NiIJSIeG-^t(Q7d2(+q+f~-Y7fE9HF zH^~rlgu46gt%g9kEB+qnFLCzbh89KdFc^v5>YtSfcv z{GGE#_o4IIIs*&-8m#`04qfaTAwOi7-Q_hkLQ{M~tMZ3C?rzC3YHnE;xt&kQn=HGl z@!ag$d=&7@RPou8Ctoga9M&y9S3S-r$^zjyXF2yC-fo43Udli zmh*Hrw#um5jZfYMFRB9dK9OJIw5>_9v=JLiN_(hxoq}NkE;xQJoxcpNGhmpiBB$L{ z8#?6xN84Uk_m4mPN(XnfQkz+IaYA#049lB5KU+TVMvYDgT$CnzBa({oUDAhFxSq3A zzVnl>dDG!bR zIbtqVc4Yg&qr~u@igdpxGohi&A=a*fA#h8t2UE-u@hu19wvX$8%IIfnZ9j%1$s4y? zHMC<9*qAEo`ehhfDD1(xKicRohPf}g9B+;}f)IuBa>vKE0XH-umd0XfHO|e25k3=K z`K&8q7pG^;q;u8HQg*eI~}io?(RVP2#F?_XdaE)jD%2!? zF*;C(sTGFuH?-;05hEe#vtogL=WSy5O5`}r0UXyB*}wjM)Xwq%tC_WPt<-`AeLxU; zP=DKp89@`x)Ry9mghiJFQJP|iG{GZ?xKxs`*25h58-Zyq|5$SCh_kn<_RB5-AQ~jX zZ4J@fZR+ve3By39bS%IQh5Mg9%o)k9M8qonJ!%tw;kY<`9_qVI?t8d~tj23xk$O zO0TEr7py-s_@Ga?3>-(o&o(w-?Y{|a7&RT$O-gK@xpqLja?tiIrR4L|+!UU*y3?ya zTIjR_0VQsobw%D`7q$Ud;-Wo!qLmth4zrwL3IdtN4ml$N7iEbcbEwKm!HlmXQ%P=O2)n1Rwk1lhD(@kN}km_~haibW;8 zy(>JL$9PA(`0%r23$kY^W@*xbOzg8;``*`c`f0N94N>DRUq|xP_)|-hQ@gPcj_Y!q zc5x@Z0oSW>C4-(vaUbsuUOyUG;CjC5RZ#Nyh*(gvQu_XiA9cy)9wEUalDYDND7)39 zOKru$05Q04wsY@LpQ1E5nf~tNUIz4f6NgG0@*8-p*=DhTHn!f%XvnVZ@3CLjBTi>} z)iZ2|$L9eT;aYsYyF1nUt zaO0gnlie;)Pb32tNGXj`vqF_`0?s$vetTwsLdy&M0DBeJp}1hM_JkFn&B_4S`4C4p zcxoYu|A6*v;j|8k7joBBCA3zYg4PLAKoJrSy7=4J_jB4CVITkXu4U7viCJSQa4joEDbbCy2{_V+zMt=GZPH&lAP7hur&L)-4Vr5 zPh?o{K#C)$9we2`D)aC$BXu^0(ik_1P~cbjnT8>)l3^wn;*XjPDep8{s@|Hfq?^z6 zi0;fC%{3pHuN;z!~83ZV~BPP!IcEH z^5NC6yJq)a=x-FNL?s31yuO`D6Q?j{W!X~5r$8XLWt2+^&8p-ut6fWYyluKTJXGEk zKWmbK3b=ej7$`w>W&g`(vu+Qa6f(@CW-POI3_XN((Mz7>^;OD!qA@!n+;D3; zl1#O!q1*L6sn|Mn^f`2dGEXQ{HzL;tKR^dthW!KvKv1n(Or*q1{$l4OXAE5J_p@(= zS59m#TJ@$pTfA?%4g0+cnY7bWLv}*c=)ta@?q7G>?`#O4a!1Mx#fYYPxAX{2yYrW? zeR#4r`tIzV>oeR*L$7MHDbU)Ql_UoN6BP7?PDYC{ztSNW>g+SN3;^kZVM&?^tDm)c zP5`b{lSr&3j*y8a*x;G@-Dt%5$~|ZTj<^DXNT{``_U*(&uWIVk)<`(EFrTk6qur-B z`#$i4gfr0gIRQ@)6!`j>d1JL@i4dn%QWdH3O+sjZe)0PA0vG?tr+1%WU8h2UM&;|t z>@*tl8911lfP%LBr1(V+Pl8|lp4B~6M~Ot1;jKywVOH!LMlLo! z!Fx0#Y@{s-^RMIUA1LLPjId(K;Ag^CGgG$GWX&f(HB;YFBUIGvGxBn`vLtw(7Is4&q+!BXT$D#BGq>@t%jiDIo%$hnl&KWX7p-AxS)9Z~ z!JpWx_p`1FS@Wgoj$uC+e?qT~3dBC}Gy(Z)KdU6F(%|LPSD_XnV1*H|RsOl~|o&XBC^xz5n$izSR3e41; zPjuKwQeDjAycf(J$|xtcpVw%ynJGt$SrmKB4ZBM`n~z+hZWGc9__AQ=B~&SfF0eO`1V#x%VbN-%#LK|;DFux9dq}IZht>f%(g2(g(_{^ z?)+k3z^GUbQ&S{Ui8KjYrgrtv%OFPKgwz%tiY^@LF76hbkmhSU*fKz2Q{wF|gQ|X0 zYW2BJ^TzD9ZzPa@?;?6NzPzso3)G$a$j|c?@f!K8J6R7T!E1O%BoJE7fJokbZmXX6 zbL_;-@rnk)*bdh*mvO`7;>GAuoe(f_4V;<1t z!uQ1{lXxJ;7epkzR$X@{4#VmaT}<0ew`<cE{)FXCwm|vH91Ct5`8lPb%W1xZvQ$RX4>BBAkI+=UM$s;=8 z@m=sJ>+<@#o_mToRA;9&^W2?dv;RUG)8C6!#mX2=UnFze#6!9?sGyi-5ObT_T?}ox+O)HC8WHLU7{5A+(rAzK51kl zhF5~!TY7v}FXnTz9fWHNRv_;-7V#dYumFR{YZ3u0)sbOFS-FqQXyUiCWJm;D#L%)9 z?+r6i;o#ti1l^P-A-p#E_FD)Gf89nEwIJ4 znv%toW7*a+hcu#SgIR<3hod*vOA+W-Z~QC7jWLqZP(g%9Dtc>c1SsOnL?8VKC}v@? zrDx^l?dZ-lT^y{@c>7UWY+31Oevx=-KgAR2$@lZtRg3Yl*-WuF^=B*d8$`$l3dj#d z@Nb*RrmG8kDhkw)7xuh;m2)IegAtx(*{Y7 z)wLh_{(~U=C8IyAO_i#T>Gg@IIMKa+$*g#mntrQ}iZ3+2PR~Anxye=|N6W7!Q6j)u zqt%Po&1>;s%aPONwF~wJAB3Y$wysAvt0AwRCawq>hL>CWL3q9t&-qTV39wKwR)m_! zmF#gL{IPntc&m6Ro*DRbvRtzUc3QlfItM?TU&Cg0zu3qh7UB{zvX9RbEb7p@*mESn zphAI0mVcph9ZQVA$h!p}#C$eOu5fZM7TEK|w8%uJsPM>2XN5`aiOfZq5r4k9iEOn0 zIrl)4^6KG|Ru_sVU$8~; z8vx{jcb5!wsE1*eDs{7!nO}U}1v_8w>&q&egJN6s@1= z!!-9izlNV+8j6>S>BX%h1OudAp@5J)N*xe8gZRq+)b{q)@SWS^61PM4Ia5I*>}X^%{u zFmE>!&92Fb1+Pk9YRj^>D6mbXh;E6BztK+!r@ltOc#9uLSvzw?`SC@e;K&FFs;{%( zv7TJCzOu0~E`MF`7tn}FX^D0tqBT%Qs_TPG*Z8$n>}$5tri}lvBVd^Ohz9F zSdnth_<3>=_S3?CUJc5>xPZ{Ss=e3DErkl#o~gY#_MidQ6s4u54cV&2^yu=XM`>LM zCMxH5@~B9PpKZK?r-R~a4i_u^Piy>3w83LGqg`efIY-eaiV&4PC*K>0)2UBGA!uW~oDOLqvSJR;1}UGdZF`k#a(K6-T()ZRtNBWISa~J^fM``H8sQ@wjeD@fc@jJ@jm}NU8hBVEuX{l!>9h+54dakmGKPt zJD22zE8ZR#H20z#M6jO;zveqFkhF8Gss3hfI4gSN@xKbps;gs$96%NYL?Rq~&X9Zp z5sgkKT9(`;vuBbkbJmg35`EE}#42*dw}e`oDY<%`Vn^@J?tWbb2*AY#%Wk$jkiEJv zogEf1N+n+!a9d+JCoJ7&z&XxV3IU-xEimVpu${L~6W>)`*qojwr{+|OqX#x5chG({ zK8h;M{T$&j&JJzu)odLf_3BFr4INYjPl)=@3EJ^SR>6Ax>)h6#kXwGPR0nI!7q046 z%jrLZJX`X9KKKqVDV6a)8Z|H#Eo?iWQ^8LzyI+z4MdMvN}H+0006M@5Xp5(QS> za0F29=@o2(WR_l|Q{R6p9nZrPU6sl(MER9+&|AZ4qVSLNqrgHu0`Mkm|9-YiiUxq!}0w-;4r8J#E!caGoF0cu%q_ z!(LZMzhWJ@4Jwop0gHTv#oQ=^IK{h#ZwRpn)xIDHGMKlRerhTjOjJC_ zE{G#4Gm^WyX{`q}C|G9b7J@zzYBoE46TV29thDTLx&`sad?VO;HP+|BG9t@#b|~=m zzfvUXYRe7|Dm_vF-z6CRyrvbO@Ybm3!RZOif8+>yK1{xn2gzeiGd4I1VT*_aF$*2hyE`gFnxvku(up0Ylm=nPA@&Fv_5ketWMvDeN<%~I8m@XR6W2OoDKk|r z!f5X4gt8o!+ZeK%KQC^-Vbr(A+Tsz%nsf14R+{4!<%rVh%zCTR)RlR(Uxp5G+h=-N zEonPIMdpKCe6eeCZTx;n8BE`#b2lSbH9aE*;qd8NrEuMtF2z9tRt3-mMLc5C5?LKP zGZ>y5k93J5lkS7FjhUC-xAJ<6sZ{njqv)P7Tp5E@XQlxpaA+tC^tayXEogH`1 zebS4$0(qq=G&y8*18Y}B$wVBz*{OXz&QKTmt-tUY6J&uy-?Z~7yz zEv(c`mO7gCwF$*#s2zFz51mweCIHznchW3R)UN8&sQ%(U;WeHGo{lV*&#yu+-YD$q zy^+3;W7HYp|1K2sV~iS+>bEQ{oEL9vid|;KN{x@2dLA{3io!ji?XMpR_L$#oUtE46 z9j<|?j!O=i#ah$r4nFGL^B<3?Y;K+@@b?wmGA?+$p#r{G9J;nb0B3oQkj^}%MA^KYEnsRUCW4%A_M!gg?XifQ$$(weKXfP~N0({6;RZ6A9Dz}Ro zy;Um|>AsyFRT$bU@w;@UVU zxvb1E6!Gf(99u4Yp*>%F5s!K>*P1c<{s0Bu^>&Eq@?Pm1p+4j-E;5?{(L9Go1TQF~ zqGRALW_vdgi#4Nf5-^p6kLV?+TwM`4QIvdV9I3mCMMGl-rDl9b9M>D<+nMqttqt#W zFLhLN14ySTp2uc~deV0>Xp2h^S7s!;Y3v6tJvPhq6*!n>6!_?X)2 z@>=tTX|HXoH_79Sn_$&a%-I%GWK~qH136u z^!LNn%ZHb;1<&>OuS1j?Uq)-%EXnC@#;U4a#0+R~o7~vkLuQ?syDCh03e%GxQV4Dq zRmLY)(QCieFi$o~qaF#8Z+E=v!UD7t*zBkkwl>VP>u`DGMwVY*}YF2y{M7dW009wS6j@tVE<%1rc)kgv8h z0oSw{j?o1RB6513by4ZQM|gWNlf(%`PC1Q__(wC)5aMHD2BEiInSbdZ1^6L(JBYcC zN`c*-9XGYhkw`=S@v{OmvSmM)>O_7uHA@HB9S@|YZDzT+p}tOm6xJLS%*O=aGRBeW~rwM-xJ!y2KylQS38OCy-hjuT)&G=SS&*$q#Eo!b)F|+$g#(A0fnb0M)^F7F%9zk z#s?X>?KXf|3V59FA?Oc zckY(AInMBnupPa%X@q22)<=uwt*xJ(Z$pYPYMU_qj~|AdBX#$g(5bsyxNd{;MQ`%% z3Eq=yHGVwK&OprKQTdQg9#4W`6GI!sy|-9w4mqo%2b~*4`m7o{A!fFVfZhw8YX7FE zpNS6PSYE5Xs&}RIrIr*&2I=p~#>|(b#AOvB%0tDE(ek=INxw zE$74-{m~0^cR!fl19jJp!_xIKMaOlQtt@S0$+MkpXvDbWg+%NXG<-hjBNP0)m`ShV zgt5?Xpu{-?r6t)AXNIm+)l2g$16Px;3E=*bA;g&>d4_DFf4z}?ymE5j;7L;M*C^tk z71q65R9FGs;@%wv_)UbqZnXvv+KJC-lm1)9Z)Hm+AmO@GI0G=Ayyv zLY-G{&sE0>Hk>>jAFwdAv_Bds_ouNf+<&nK3`+0pqxYxmmBO|-J}fgOScOSfoz2?& z-*`@JpJ{rzGsNsFX9pJ{iuQ_o%hzMUMVEEbiT}jof-fZ~+rC^kC6lGed0j{|tRG%@ zye}NG()v*UzH#wMMyob{LIGZykH+X1rImL#kJchKCE)kn3Bn4MZrjZnKsW@Bv`9f; zY4n1RSY}L}id~*a6ctq`6Aat+1cq)Dvs}y>)2NI#IXlh>SL3`*DVmv?gu=e!q2%nJ z{GRQRVn*#9VkU?k;#SiZUzbw*q1n^Hs592&_Kl+?pNJt}c{iUOtt@A@?*#S;A zREnaV}*SeO;t{y^Br8 zw6X2S6Qb?;?3#-O&#t2uTxk%=Im04W|8+)aP&$-YWYr2F9cNoL`Q?K3UCJ%}>8<&I zhekJx5GvILed|`a#&O(D&J-5zZXV8Y9-6m75|KUxVf+fIy@(=K;x=2ouNUfF7B#z+ z+`sRp00hkzFr-$BWg7r3-)h9?1w=ADE)W)|oe|1FhZ`7bl+G0RwGxZTi!m@GRQu@~ zeaDn%A+6}-?56q10DSO%i0w>dRTVa3MR8>#N+0ltZI(mb=FGcJ&A*Jbsr12&XD=*C zSxDWTtyTk{AQ~w$w0|)=h5)F{!ZAXyl)mhEq{0xMS}?yl`~**0`~xuwl|E4ZO1_vR z7G_(30|U)}M4xZWPgu^=TpEQnmT@YGxcmrZu5ty$OFhiEJ#^C&yBb69ugU$(ydd;> zDF7ipil~SPUmsRGNDg+j8`X7k7uh+kN3UTl~6Y5&-NJyV^ICrEMUM*Af~;Y!F9o_t`#(#n0+6eV!68az=j=I z&J{!jua=(*>)^+~T3-F^^q++Kjg|^RL1tU0+XG+916Z?Ke2;})y(?(W@v{@ArskAp zRbREtdMH<`K>Tv-qC_MlM9xJ;jy>Pd>F=Hzp7i$H4AxNb@KxM{ZeEaHuunb7zg-kR z0}vJ#J{Q$920h$pfL?flZM0iRB~-K#$Wv$kB+wq>*V~mnCTQ9!t_S#HsJ~>xrQezU zpt^~tJa>B&=Hs!)B`$dO#@e8`S=KuV=D|#*W3y2fDgNZ~NY*kaZo3?QlyJfZA@~)6 z32<8wVDU@u&Q31*v8EvH@Xy={FrDQDY2^l^pnLA{YDM+wY8g_KM!j@~fLq$AVk>4}G_-@@%8&PAW|C3sa!RZL?x?qZmU zY{ag{$&`l#HQx$_O26~Gc+sSno!hIWadA+P^zwMIZYN?%J723tBE9YWxmYO>MlR}} zI4wXZ>uB(T`JRH*)dP$Nse#lEkL*6Y09?~d`G7e=#B2FYB&7rBZx7a~d~QEpH8A3D z?ACuKLI zJuE?KIcx{cSLF5=I*j>16OHe2aKkV-Z)Lr?P-QON4=E%wi z2b#K(!_VJsu|KCF81VPT!$nPn-$=7Bg7qU~_=jk(d$|W_ellI-SMKbT>$7RnR{b0W zs6iM4!k3Yr_6;5l`g2=31t3o@BlS5GW@Xax$aQ(YRfpv;!Cc5L3k?2h!KKLC->_E{RJ?f1o}Naa$K|qY$phOdo|Ot$T{XHw0UGA|Z`kFuxDt z-%qzf1(|=S!aPG1Z{O~NxIF8{L^DT204j0$rws7`{~^e~iS?yl?ao|_ClpAY*?n#% znnSvJGVLs?A-SI4d( zfB)ukSH#`{KdWW6J0T(g90R`aUaj-ZsdWbDxFz!<7=Ahyf0x2aA{6?k-W5YtDV1{M zX`Q`2QqZ&{Qz4c!PusV6cW*DcRTyaRo1PXW24ZKCg8R_X(P_KIMtR3kn%Tlx7H2{Y z$K4^Xc6;&E&By6hRNzSARiD}vh$hvvPuV&>oJG=K%s9Q=FrDYzS?9cJWaRdDuP(-p z!r*`Ez~7a?GS-ZUdN1>jE!JE{q3RKl;^;pU<3D6O8YETaP=Nx~wGJ9=k7yrOPF{JR zGw^V(l9NvLy+pdFXB)5>o+PkRHO?h;)Gi=By&PlI!Vc`l!4vA`!iz20$mt#X=*@X$21AqE1EIsLve8`-8Sa;Cr+ zpDN{;CAYp21NQi^M-@*SZ#2_n0!*f`9d~{<1^>^O+DZAp28X}cA6CP!o{Ei4K4c;r zVK&wDT@xekiO(#;AEdY`Ay_o*(RYo{Ep91wSKDBgdyHUPaFMPz)!`PAR?>;>`$2ss zd5YV_@0Sv_#+gL!#Py$OLF9_zo9efP>l(|oV3YYuPIj)ww_zspPk$L6EVv3#iiq^| z^wSlWirapvOk>?6&{8ZevS^MA3rVAR$O^pQqCItyd)TK|Jy~T+)!wRc52_?F637+f z#G_!nqv+lOs@(!*4tqzFH}_jaxDqpzk-qg3zB^)WH4g9cnL2<7ij4Vm-C2yI=Q*L# zk}!)wewJ+7C%Bxw{Rsn*1DDeQJJBmgw2%eD?WfYFI;(>nF_lB=^?bWdc8{7d1G$6D z6Qy53_n*(1`CUvBQhds(hR_>>0eXOH2g~`Pw#;A|+z>K+E}EZYcp%7tb}g-5Oey_6 zYY$aKh3CGSRRZwSPrf~`4@pDoEa0Rb{UBlg_V+L{IJfRvScqDcZWQ3fN zv;des=g&0#K)<n$zD3nKT!LcFHShP`=2Z>nZL<2; zL)v$W$@AzyZ#|DUP7ZwQmo+6%(T~ty>5wOS39FLtMbKt>C7c{}Sh5~s0e0Lg~I z==0th6u8sfAj;``?5PHTHs{fw`f7+p@H9*&KU(t!m9NXUHg{Manw>3FR5u*_`E5;#Vb+ zGV#Nb#F+{XjeDb9@wv-z!jiG^Dz#xia9sS3hDj)|Inu{4tvgxZLa5g4UYCH6-<|HG z%(L!u{!QfDf71Df*8jnU?3^Ixcuot)9g#7uzZiqk94b zptF#+`|}wNPXMemB=|U(!LNRr1fHwFcnhbf=O4DW*WUHbTRIojRi~Z>GEaDs5KBMG#tCQB9aHi2a%`um8RWA`I!D)=W-#m z{5O8Zkpg{9%uX3>2?epJgKo54H!*Vzx`Bd397HI~aSX!gUSE62Cnz8Z_K76=5543! z#YsZ?w?4wzhx{j+%!V$9NBCm?jX-ZU7u8QsNSavj*L7qG`68IKFflP52{GMi-@7>8 zG)R>rxnEEZs1J)tNxA7#6wl5rPg91K34W;=9Xm z=kC2REs?h&@6+>M*?*ZIFW&}*ekkaHUvNM`Z0kEp?}D*(^~kvuXnLpCt#^)=o>ozg zqcMuzytI@&`m= zDCzQa{t=NX=^(dJ1Yo||$Ox!|Jy@+rbmeIdfFLbIRG6Un5SjTa1MGV(*|&lhdk1nq z$#@>E>vnKfId?Og3(pvZB`yzzP!mPWo1EFnet8)KFoN;_%W(d)Prr}-WmcNMiss)1^*>Vk6Syvm@a{oL^6PK& ztUAJn{o4+(yz}!GRsg$V=%D(L7v30N~mfj8D zOous2jBohl{V%A*EWL|>ji?!km5yO1>t}Ecky+waUz@u6BA{04XUWE6RP*X87s;wT z#^uq+mlRk8EQXF8)EsGpx-{{zYso*IAOA|w^%4g$J!^%Tr_gC3qAG-hBhOmp#o<9t z_af%e;>wCaiz|z1)N$V&ZHdT@4poYTrL1}|3C8`^L6!3P4H5Ne-HFBQRcHXo0aRILlA& zJp7dOfMZ?zOF6>+fFr75cWW}@+a{#p2>C*%7Jje>uaHG$>1!1W5R{_MxG{9y621D$ z6xxfIzbA>%_XpJJP3MW7_PY^~ zIBSrGBOUBAgo&#hof~LE+uv_F;VsqcT{HsCn%2D4#$AuMTI>%rKpdkIh40qI{$p+W zzqB`aFkkOmfwy7QYZ&|7Bi<@Yd13SQcv+H2w2TgKGR1?pT+Y)!h0Vgc%A!VGL0q{5v83 zpbIUZ6g1T@b-_Y!r>7bi7ZME$T24Jd?8@kbU#gBd{Zc}`iJ$^HG8FSM(dsh{lv1{o z>F{0ed{7kG5RB4-B_ewD@h>f<kc68&`qZl}3951fFXE&sJNjZ?}49KahJH&O|E59uYSYY+G6_mk5fM?}4;GM?CDI7Q zh}=0w zf(7yn?>BFrRq7xaoDdRxHX1cRj>CibH*Ji;GB^r;Y&16tvg2kfvHIR(_Wi^k>qi$B z1!XJ+S6{C6+M;o5RW+7_W9jDyA_@NKw-gME8>jokreSR3&zo+Evv?bk!V|m2R@UI2 zhqnlzmb6hMz>gnmUF_JMm=z&C>Dte=2hmaaMxpYf`CcnYaM364w=PFjjZOT0<=_kI z=Yn1*`zEoI)t^n;n2xg2)LhM&d(-z#xl;O`UD|pJ$KcK_M$vbJt!oHWMT%h_S|O-h z&VKA7W)L$=(BjU;k^HO{N1uCEj`TgTyE87d`R#Q!F_D?ZuWOM`R1~XOQ5xfM^70DV zwqs$FlX*7sW{ZovPgS&A{ZdjRU&I-enXKg}`cWxJE1o(c_Q!X#>CZQ}{mi-h?GK%g zPYWmFE6Jh_!{0Z6-lu_#!JhQf02H^AT)@IZWGKN#HY91mi>Z3zvT}@MonG%$DiabB1R_V(ca*+) zOF<4|{8j19G*UmWveU||YUx%AakMe3fnwYt%buAS}v~`9yOlkY|-|rMUD8kMmTYMN}_f*o6SY-z4x1hDlpK<%8GJl z$i2=8-aR;m?JYtsG}xmDk)+eD7lePgW0oW`1iIWHj^_3mMwQU|hS87aEu$ zdvTTeqcrCiCP6_aHVwjIov`4iCZrgo)GuTSiAX9dDr!I9#kxs?aWALReYDL-zh8uf zzbR(2>YI1nNn%Nrg?pf<58UJRf2`4bR5;x|BjjfN0(D1a9f1C`SN(%L9ras^&E*|8 zOs5b6RFK1S$O3XOb=qsQ&4e7k$>CWOF6M6b^IhgTFzDhS->!?dHaGq4v6}zJXDOSE zdqY%~H>$7ep_c}X{hnNvphmf?ejD<8c@x3y+%#_U6}TaWfbUfR^W5eE$G#$60ecMB z|6bIeCEH~O{CKDD@^V*CRJjdb!isi2arT2z7ZFJ_&K0=cZj+svuXtC$usHlJdeg$h zn9BBJC-E~gielu=hEj_Ux5oL+#mCIVUzOw+y3c!QHXEH>G}j}xMxh|`k&wfV%FF+p z?*%S8mbi!~8I-d(Ppx?V@-}(mPOzCd%%?w>>*%;cmWE@cZ+)7gPEhJ5Y)v9B4;fLJ zh^t-Rsng$1tYB6WLvC+cFI6kpq*<5*nGy%0-D zO5s45TO9eU9hsCueOw_1%b(Ad^2TC3!t_+=w!OUgXEvUTkMTQg=!$5X1w%j*Ku7)v z*kJcWzn9aQkG!RLi;A7Kcvu3(HgnU4W`H*FBmHI74Y7YR?mM*`<NIWXh9e@p%+0#=Daz%Fl)&R&Za!F$jtt`q=mAhGGRK5V(cs05Qv~pYk%zm_)L1o)pHUv? zNS)#3K|<=Fb9}#I!ui3zWf&LW#!M=tCY&s!rt5PqXsXbK1V!rX^0V|j3Azd%?K?+9 zb6c%Dg86{s_H8A9`2X+T1J7^#sFHIGUBhv4K7YvJq%dVgRY~HR4(ngMU?ThKz0tn? zuzFgQ=d)#Ova;fcag)CZUcxDLHuTWh$4k&OzPOG~Rt$$`8$7+|aQPmA4j{s|=F~?L z?IrE?-R9$CG4E%R29aM*EYi#HzIndQFJC!HDl#h8pswQVdw&^98o5yDCb%T4nIkYe z`Rz|*UE`sK7B02|Ohp!ZUphk#Vbi^5p}KaE*(fZuLVhyx4h>glhWcKVH)2+4kzMRnN0I0s)DV}Df-rHo}8rT zmmj{H$4N)ORIdtdpwKWcZ6E_zrg?fR-JeHN0b~Eupf_uS{!cT?rFQBPaCH`eC_ETP zKl`qMa&8@uIb;(>$C*BRc8lprqS!?`d)bfO!9kBk2$AtAO+?|4TKIJ z`3Xa#94O{_+f0Jmu|kOOnQ7z!k^hzf6DD`*@psQ?!?p67zWui;PQRFYjR2XvBTyPo#$P3K9P3ERy~jbp?VXKuf#+ z^1CbYUN{QtPB|;`?6w^VsVnmW1o@tTfp#l8Ww=9f$cR|{xYWjX_2qOyZ z7i%AZ{kL`a&ndR-vsAf(pD4ki4L=ordqryLtL!;IchhukQosFkYXCyii8rr`O)Y`h z&_aMJ*d*%w*&K(u=3Ma@G~cAA3B&_iR+(Myl%o(-ii5zJ#*;KRyZye0{OL2rok%`V ztzeg=cU{|~b|0))-re~oI%bkJMa4(%|7M~4+ibs*<4{so8nRmx+hj~)QkHsL9lM_l zAT|W*&ex8Hr+hKDTqSLd zzn&NO*Zs?1>DK==%AYG`x@jDndN((weXm_>fnUq?c@91*<@N7uU!_*gxIk^E{EQvU z?8;)zMog)aJ@04wxQ_3;oUVI*LvF5LVI|lJX^{8yIpo9p!zJVI5lkfmmE`{7+QQC+?+z`E40%DuZxHOGXe z+qo%a$!YXs@CQeS0Fv&HhMoqVotc55Y_eF^CNY8xiAsFowQIwt1gu&C0_xnjY%9B2xLXK;cJz;V`3GAYap8T@_BUmq1h_E~d}Gh&9i0Y1 z<9|1UioEE2lnptx#+sEpND_+z>!z!CNhCt8`hkj+}gAqa-lI zUIa$V)#1!_7sfwW7uE&2bMW24yL`u8^K~?|YRCwTn(q$c>_|4!7omq<+rhy10Pp6j z-=bcL>sKhAqT1CdsE`7=OJ=M|XAP`wh1(fjPTy1cDL1c~Fy~gNHeoP-e877%^0#PR zp7$y*FV@i2YBVk>+`mM=p=jsr^!~IF4cyc8bKMh;U4B#%m89%(N~fT<&rjp}ntHS; zf&x%q~VK$qd6xi%&>Lt=;AoWXDl*@{`KR*E|T_DB{<~`m!33UP03w^>W zxi6q6TwUj4$)41UPw$G|y=lh%0PZ)s=V&9^6{!gKypG0TFQ)HHVaB~W6XV63zJsd8 zD9>SB9?XYk8d}$cm)M41Z<9}s7_rSht)nuSnM(Un1^IIb|Dln5PoAy{{)I*V!!UX# zsRSdi-r4qt`>}n?6i3d8xg8mAF~Hd!;62IF$HTU*A3JX#NpC1?YTvfgVI^DC;pyq| zD*`nRxcBfPH#Dvvy`Vm;r2j2|(l=rK{c9A?AJ^9-D4cgMV(N|}{#75#2Da_Sr8RXc za)&PPrlZ;K9ty@cQWSDN*nCmSX&4$;%2Dz9UGM{|Mf?Y$qmkIecbviX&bvbS!U6NV zgyH__Vz1=0KU)gWrpQ_9l^s|My}3zvEv$7#_A?Xwfu5sE_PTGz_qT&^*QbN%Wb`|y z?2M&1Ze~6V;wEa8UH#$9#MVtlRAUa1-S)PUyvUVQgpLz_WhCGFj2!>Botw3hdx(Fg zxKYYvs}E#j+S_Au;wGD?FsjAL#U8a`?@|h%b-eB?ct=113QrlyN3nMP)9vyC2ep~k zLIV&_FNDs9LrI%8o9f1KX@nDA13Tay$)Q~H|L$U|t(0-i@`~O|vcE-kgc;;eV^F4K zLsrO>ERh_WmZ@O3AWf&^cLTTSdA+ET#N#xw%X5#E{9SK@+Z|O_#ReCD3+fl1)@KGa zzLLIazkbLVKmsh@m>vS<%v^ddin;CW+)-lZXHnnf8uqXLWINbwl}Zc>FIN)EM}N4I z!;zMnG*Wg)fCXOMhrp+9>7{Y*=j*0%&I4HRPlwcwqyu>%sh%@C`R{~(d5q!ZI0Tt1 zahNHwUcOL9>2Vo;amdhNb^KAL%>mhk=o%pk8!+<_7~`K*`#TN)nmV1iavIViDtn(H zG#e0UI%6t?yKtrXWqyUuV|j>a4KCfldraPz_ljw69lv^84eLqzA@0AtZu#@DdQ*yL zkC&gHze+Gga@$jD>L7kxThg(9Dfb@-j=!Db7;0stIRNGz+UA4Wu|tUQS!k32slR2Y zo&}lJOfH|mFUXE)p-Dap|8*3-YJ^+;*8=`hqBY1NF)1lYS3wj6^ko0rvF9JBNkUxz z^qxXHzmj3Gu_a-D*%kh?h#P&3khLyYqD3D8$^yWe{||g`ysz%tpuI>Ih&MJuu6vB3VgIZj$6+ zlVc+^(4>YBXU?26Gqy8+>)s!Ct@}RjqPhxJg-l7O*NEGmaId0qO0@rJi~k)rR*56R)+6& zF{aaXu9shB_r40@yo^e`l*1OlSXxf0b0siMjO_`|=U48C%rGhz$qVnVs+5a)i&k2Nt4p1{N_6H&;}NXS$_kst_)47)a_|FON_}hBPr8dW;(^7j z!o|a%go%$YUkv8r$)v&=KnGIHy)=6ajF&gN3Df&a?-q&QTj90Qe2#nSjtil6c@*5Y zP92_-okmR)aodnwFuO@5w!c;4=a9dTwiTR#i*~S8fgVFOPCIkwV?Ml;P*Im|K_~E# zle)Bzcu)5lLyOE1YBE8%iC?Ur%cU@RIu|+#j@-9_Mi|pHf9*K-ZIsnrAF19=N*y&{ z0dCBmgW$U>Gco?}Rl6Q(Q7q}k6@{?_Vj5FUDKrR$*lY`Kq`UI-6UTsV!X#S!1F^5* zUL(3irvP~UPX$q)x9A+S0NIPUJbD{UZ`%2eMQL@{7tIn_Q%R$Cg`PPsQ6or{&+q$3 z=BdDo_&l?FbstT2c)~S!%^3AeyZGhvl3arI?X7wTrPb;MEjwxyT$hpseI75~XZ4C9 z5WKcSa+wAV>IkqOVxYqfQVHk{amTirSET$xi#v~Nd~b;Qo*r7a3Ly{yLVgA(miJfU zmjqGHiPS^xM|op2oM&e%lyiyg1+n&rX517Mls?1cb)@r!6d@LVrRPVL_I1}D2ljHi z5?A;(`<=Jex}Gr3=@6ybQOZ-&BgI~pG-O$WZ6Z&nYOl}8@17o^T9!MTkze=LO<;7N zck@gHpGA3yrv~XLiWtPxK2UcAtZ(N??PZ)YunNEVWi@24Z;w5-@G!O zxFpltMy5q;J%DBeuOyju=J34AX=FM3y4Ri;NWHx&# zL_2`1*JwG#Cik8k`#hwu2aBzwlD7`r4ZSPvdcFnOK6TPd^Vl$)>y^qFa(Y&__psl* zSMXgm=hvGzQAJU|xCH*QNJehK#%re#TP6+Prm5%XvYUCm8(iLPoj4kAvPi!fdN?O@ zM=d@qRO%VIzUSZz+UwludZSmKi#?Or?Gzp}&Di$6e9y+1aPG_63DD zpYx#duq(^A_lUf#I%&W6P<#t*ol$F?{emI+|juqwSB20 zB(1P?{tXR*e_Ik#kLdHqMn_`eOiRTVdsIQpZ8EhxpCR{x$OWVdL4mmqtX|@T65ITw zf=@Gzf53)u=5~eKS+Sa^F&&s;kpYO8qVa&7q^*NzJeks%SzuKD7GA<+C*#YPkvC&r zPs(}Ij_TiGdnp@EW~FjPE<3cv0r7QaK@7P$vpEf)SrKXP@3XT5r_LBNG$AIg;Nkuh z^5TIDGbfZjMIH*WuGF%+K~lMaPX?v1uLUm}I35hP+}9qz@4BW1Smbb5rE=_zd-##o zsgLKC?E{Z!fnh^70@a<~hWumsyB%Z=PrOa}8hzYF-?4nT(_POt1TE7?QMNnDKYvXc zJj=qt=&X}WRXO579<^(M8NhI#B5I%rWMcrIV@ZPa2zmuX4ZdlnskAt2L&WZLYT|d1 z^Of=t@u7t?4{iz$I@C#Eq2`X95>3Q3jg8miJCqobzrsispGw|%HgOg6*46lCZ5Le{ z$9MKwXGc5BU&BJ&-?TaHZF$)gjk+Thn6Fkkov+TpEo0mRVWgw7lvzd{i^hwaLMM<` zMt8nR_7DD`O+VpHo7Ur?>T!zT(sJ(QyL58rWOu1cDR)SsffiV=g*q_Lh~&|UxJ>o6-Ay~j{)1HMbF%Sy?P0N84e6k z@5()TFYEff3;kmb99pwJ>3PjewH@Ks;Z?We3p%V^aZ0vghq4}0WEhDyyZatx7~Q1% zbu8VabLyB1Etu71-xF)-OIfkio=+Zhr=W<9(C83ZNZ)}|Zx=;kk$xZ+hgj+4tANA4 z@a<@p_=SeJUu~-_Pg<;vT|c_ig89o(yVgQ_kHu<3rKpmyo)``h2qclhV~o>1ZhrK9 zpd)s_U*ObYyZu9$jQccV&4|?Z^qcSpn8X4atT<*Wq6Pk~0jCO+0*?*XVxq)lz7N|U zPVM=XYU^shOaz;YOwI6D`E5heTm1$G%k0`UQpUF1*CiCGG9DG(4*RyYAYV~Zbg!?k zUqEzjCd@WAg7xT*D5c7?Hs%{F?W+~mf_5ENRAj-V#=&QUIgdLEX5+6n@zk-HE7Auy z`Bm-RU@=zUo>%k*_HZA2y+IPA)&D7m2Bz$y*B2eaJ56b_d^W zqt;z4Oi#XRvG{DOI$(YN&oMu7+L4K5gW>uFAt_&QO&>L3KRF?}CL9 zdzr7&XmIZCa9Ad>qe2 zjR9l4;9!^{eqY8yj%r?6DTY#NqWuer05ll8Iq(RO36g-lXu%A^zKTmm#76gffyG1E zYBHXH3r~x%N40vQluO%CPN7PRv&Y=M_wOc)!Qt+$)I45kEb4PTdPVWVj|=)cI+ci$?0!h098nEy=kKID0QFXdJ4bmsj0NU zL`G$0_S~1V91U#; zk}BmYhMRcV&fduCBUZK^%pl&LO>D|jUNp!5vr7D+BR>@AUJJ_M3ufy04DwVL3e{v9 z=h-H0Rd?F!ijmb&&K;p}=~Xx?&o?fpRyP9#3rSl=n`ZImD(gmjJgH@=d)R-ikH39s zwO}3G`P#|CRzZwnCyR4E3HGjZX?)YWThA~gt?T&N)*xf0kfV&od~t^Q%Dw2x4DH~O zBEND-&B}aE-%xR^qUEi{rACHZQ#mzd%0~HqoMIW86S2pd`9UFNPvXQ$EYM&TA(eRr zEv{qkjn3M*zGc4C53!$VdYnRwPYq)wW?<*DQQ+SfkF0B^uLg3A#pUTy4RRSZ$D8F} zU(c9U8j-re(>me~F>bWxUhW-rXq*N-sWrWn}z;9Zr@uwpa*=-GQ;E|-`6mYn@T zkpx1NqrrPZlNvQ50*k%e)ejv!(@cx&bLRM13UG;B-}md4too=b&TI$8dZ?lV-_?nr z^7#Z)L_vM00Z~$0e*4-h`LzI`;>`hc==q1yEr0$TKXjXAOq?YotrFzh;o>`9=CDP% zVs5a4dwzHZ^L1!Gp62>vSNLJZ(H58rkwujpb*-!#)EFGjO^M{$$KMH9=HWZvi>s~) zLGYF$T74s}n}f}WS0F&(Aq1(a3iCz5kpHA@#UeoqB3{T?8d(x~hv}|cx7{9P(+;LT zY10Vh47?dCCG#@o=4CR;_rut=E(IUezL7}r^}cx38ze<0XhpJKHQX_ zW>>w5ep=bjn?d^<Cw>qZ5edzICIvt>}TO=Xnx%@3e}2Z0u86StNlETV9;H(jERJ ztRKcchOyeWYFVRM>YKeXr#^@!p(SNj#~G>=+;=`cOdMMfVfLRCv0 zeFzc9*I*>Sj8(Rl7{4>7!{yYb}I;ULjn*=N_=d zZJvn{0o!`(sQ!>`b3N_oQ}!XtH0=PwC@mV9Jq!WwsH;q{siCtVcMMuU(EIn zKwchuz9&zqP?K%19NCDLgLQiQ_%@!Jr?3c~nYWwI*%KeEL@lcKY_@&k*LYwThfNz6 z-CZR5srub}uqjne^zj0PjxzrF=$FRffyIARm?xCD`hn7DkW+~Vso7?bu6%bd(LQLo zWwPQ=J5Rb;T_WmrVomXD3((8IJ>MVu{cMWYXz2@y&*y$8mZbzK8N&Cy8fnB~t0O$o8 zRLKEk>;UDYWOtq&?d}44u3)8OX296xpJHaHT^q8cXV7_3pSyd^{;_WR>d@Ub1INKn zg~yfi{luR;wkMrh8U6eEpT59}i|8mXDtZnb^e*X~4IRc?R(9c|6o1H~>@S|{=yhUT zDhKG-uT~mr>?Y12FMiE7@Xv_W^1u9>=kdG$@xPxIksv^Z8byJ@lSQE@bG&s>opiib zZrXC1+-tH1BB|NWdRINR<#taTtG=pD$#q7~xZlEh%KViN%W+{M){ke=jJc9|PYPcj z!_@u8Ql>=CKVmx*ix907Fh~P?H<{RKnkd;h+UEahs8fj zgl*uY6ph31-HFfv3>a-}U`VQ`>y&~0&IEnVXSjTf?T&52hmP7^{F2@S3iP$zHS z7#*2AuVh!XzVQSUM}?nmT$xO#fr z0dWehW=5Rh7;41`t_or1XDxb1`5krubFU>yl&v`*pyEuF^+vp=j%$)SKb^ZI7g_=@%Dq8C^vj6iXQV?(K4V!7 z#-qr;=$7ch3eb5Val(E@i#2b_B`)WqZBcF#zh&Cu=?llbut?)BaOAS8a@SU| z`*AqoepFR@D*h-Xy>w&ws?@z? zuI7Zg!tQYIqc7>^k977=4_meQX+AetyQ9|Y5|EHN{KndhhE9>~g&gA@(qZ+lvMFUx z#ftCl#`h%xfYy@z&v=k-d6%H7T0@68i0T#8(GUapbKm5L$Y`#B)Gg?TNY$?M{FBpD zo2ip8{1(`)_X)ng2OXeH2Q;`xx60%r{)t!VjZ}h`td`7_U6plB+{N#| z`cTfr59uu3mn)BoFScQEDVGuv5lcA{$y@u9dImDXo%0=L=(q9QZvqmmv)iw1)i>NA zXmyy1^_&2*?W88=;fzQ`8}9JOyuXHx8**Tg~(i9N{5 zF5Mx^{i@Y)$QtHOB6^3M^b(g<-T;MOz0z3U@UcsCYHx0RB`+8$X4CmB*5)>^=#$yo zxe6}#t3f-{k*`Z#4BX4u&)vkRdwO~zkH^f1&w?ha&h}1#M21h#?)#}P6C;w3(w>X! zRD-9%YjWHCS+4-R#GcNZtUY!gm(e~d3tPVMM(U8ZMexR_ zlsi>lKIaz%R8*e$9O`XuZAFP(&p&)mt}dIv!;fT>K=WPn$M+LF94j&i8y}Z~h@DOs zP!4(u`_$t9TR~LRV?Zzkk&s}qack{}xAKcL3^$#zmUhvndG%*XHPvhuIlePokRDQv zwr&bg}|m7A(VCKVJPO|L@s1`-Aj z0Ya*Rx4Aw8pFAe?@c63feh$k~(}Ac?CXrS)w@`y~uiEx~5vFizHhFE$$8K_*GpgnE zK;^;4ON}hT$8tj9Nl0S?$1lvc2$ic(_=D^oR01chTCdnv!({wKU^;xZXT5`{b$35s zWXRD16#O=l_{T~8VV3_?;2=X0^+Zoavz9BpStxsI0Ut855La>HHU5xy)0gH$g!WbE z7eQworRC@5HGVENbL!XmbvQQ*D=N=lhy}OOyJe&J(jHNZh<_-#HPUclmq^oEkGB-c z!!)UQY5Hr@b_zU1AF4y%BjxWoaL<6cM>eBT3AQ~R5`0NYZG2hg^3cTYaaK-CaS?lt zpeGsq^_*{em+L7RlfTKObe$&WoQ)8m!htBoWZ;+AnyNi;os$!d1U|oC$+}}T^OUfD=-ivVEsW1~$R)(~;SCm^PI=YRE37Qbl9=usEs0}o3 zEv2yz6FPAqSA71KdbF1Np#>iutAyM9s$8pzO=`|4`MTT#$RcvU^m!^sUkBjj))x50 z=pg7VU626#(6ua70?ISO82b{<52$mwy2o_@zg=s28*jnAu>jy9jcNVvCG98FI0&!5 zgH#uE=_T-KK%GL$1GC~7mY(K(K`AxG)^{9kVkjhD3nuIZNCI$^j)VvgHxT>pSv4tu zW06CyWB&V3mUNVo&qri}h0WC9^75~Qm|21@yV<>5F>0qco*b6FUQ4>InjD0*2v0fT zpOIy@rMTuH8gvw9P!g6BU~R_S!K{6~%&3u0fOX8(&HbA_Q{64Y^i^S*?@tlQk1b=u zRwF^qtb$kB<%?TL@vZ3~jw9^V++|hKs?*~A63Vkqa^a^1#^h$nky62sb!v#=z3AGt z^?&mthlK{vjWkEFB}Oj_D`0RV@RB3*YE;W-NxNQrn?*{oz^m!VRdEP6^W)ivgCi$V zI@x>rPR!tMJu9lwPej$O*VcmbIb$&@gxeghYkkb0u~!#6_p50_q@+c|3 zeNMz(I>-&)bVr8TwlZ-ZsIc*-57r_^^n>X`Xx0J40q!AkeMS^^dGi*xUcX zPp@mnE_tCXaW9j6;Ht%?DlC1>-?Ow=SI=h~kM7%WNx5;sgZo%1=h&Qiy{Z?n)TkzQ zpP<~~e$&J!2^ql3-ssaiE79HwQ0s2e z;r}KLXK75I85o@mYCp9RVHlGWntdqDT*nkTcgaXn@{yie8!n}q!5fL2(bupTZ`JeS zBy36Zgb3AYq3m5(+~6U6S~Yfah42)ze3day&;9+%bNE@KI|{KaO^xxD1kp#feADT* zkZy9o{Q>kKe&cV3*@u;Ki4Wg`Vt_qUPonb0?*-1SSjUyy%_qhm#l!70jEEEEch>WZ zu+8J$>B>^Bp3K1KiRPNzh2wl^@E0p5>_Xn>yo-P?EiHj20=Ul3y*@TTriy?eJsD*t z_I7r_LW|8zVA%lj61!+w_i!>7xcj6*!o=8HyW-OBpi@}{V)2Nt&kZ~y-q+l4mTx+b z>_cAaV7>TTXWg4%4O)iXqx;~PbFhkUcUwUpR|jh})a)hI@4IUnAs{F~1AzXA=?4vf zw+8#8`G=1!V^imxXS_#)4qWF>k0GBEl;#rP3afezr#p#R1aY8X`|Z02FMK)q>gP}g zV~+%ODDGZZhOSRf3wMjU%kDN8o))Sc6I6g?JruKX&l|o^jrB05^5Qc^RCMuagQj=a>8T8>F1c3 z(+T)~!Xz<^1zG6av+=06#P3bTUD0|#tvv(+ch%s{m@j@_Zt|~RgwYZ;0%_Q4-e%!z z+3l(og-0vBtX0)OJPp4N|6=}7D5NkvTIZ6vpwI>?dHt!kED;N%dAbsx<2>?8l`~z) zgM9eMqc-B^E8)x>^5p~1#kkxOpo?!iGpNw882-m>*t_;mT^2p&D1S>7HSI)zOtFWm ziIg`fd%d@yS?Q9u@lQ)F9+EtAr-@%C=W8#BkkjbD>#!6pBKUcjiu(Svi6f%bm44nE zd=()kNoDa5SQWU8W<~tAL)#MKh1xd11&D@Us$KFRRB`W`9q!mHvL##G>^jPK!aq@#Ph zytahf!8HbR{<6hQXp2uv0DiyE0(&4JDQ`?sJ(} zb;TLl$69OeMM4~0%|irr!gRED*IGM~uK`YN1-)hAJdC|>FP#COdu!8zVc%(P7#J@Q zpS)b*_SIpxBd|d!0)1l#r#ZTJ+&SGZh2zav+zee^y2FG=|LSHoB@Q|H z$%@#SK0ARK(QP{C&W=8SNa`p1jAu==AA_8JkIh!|RDWo8ySKj*{(dUFEj`~mW6hb@ zCDBBA>D#x}GVF)vMz(#?h!HVWP-vzMDhlG!4>os!yKR7y$6$}33y7*y4=dkpL;&a} z9Ug9r|Gy+NBvFwR{aF`5VXaaO+QE5T?pp)bEUr}H=wosCCrBt~vivzq%;7HwAR!9G zhDrRGQk{ z-v4T5M64)UwK=~OeTV+jzdbF5Owu2_Ma2el|F+!m{3-Jz+@8;l<#g=w6OQcXQ?e2F zacTX9b%_!JmYxdfM$vQpyP$rPrL#0(v~+v+0g5J+X>uwAtWks8Gq`=WmM?b~HQWa7~sDDl5e;2-@Gu(D-dp2`W5o~f2?8hx*| z875PIva7$|@7o{3IyYomNnFrT-K|`e=n*BD?O*)?-aU@}g^xr3OmFQ>*v~H+ynFgf z3WFyvA87i%Hu<=+=-VQ|dHc)k+T7p?#Ax`l+P<_$kKgV21H`!oa^A@#|K>9(Z%eUr z%TgF ztp#=kQ1+e^)uG`V@ii@;{rj56j9N#7@l_FJN7YxnU);b9xLj7LxOs>?ct!sBz*THY z6oq^aX((IR@j9^~)z?S0Aq#f&+7G9RKjMD3tp?57BzOl1_^|u_lsJd@&qnG8rH$l-L>Vs?A4A?TXoSDJl`739=8^*peiOXWn-L%smeG9FZ8rgE+t(01I zjkR6VbuMM*X{`E6D~qYsX8IcNWon{YAcKH8%+^GlfV}CF3`JhprR3Z z5)yJSp_rl$qnFsv16ck(1Aa zYV^zn<>$;5j1QQEZ~}m&+uzz@b5xcs|ET@i)t)wz&M~WR(cp2f243E%KzTW8?(o+fip* z)e3Xzrf()&5SbsO?xMdth7O`ZbHqx{Vg(7FzJH0N7?KJ!|jA&p|#oRL&n zP$28r!D+qkMs=m{GGTo!<&ez)DBSM(usXQp@kG@z8HZ#hOCb0fWq~G(Ea=S~l7j4m zDNrXqFW=9{q3ZjilI4=&k>y;JsG^g;^5V(Oa})y6GuH(?R~@sRFc)VDC$NVbLFT9O z+n*{MiW`nSn^py#b(%*UIUB}$Scs=WbCRH@J^33cqLlI{-Y$l*CqqE5b#Rm9Z=Qdu z%jj3S-#)SCATF=moP6c$UF&`%a&*!h;yWd8C4yA8%D>V|{PVT=n{XLu{n7ZJOzamDW;1?=Ys&%o#VVDKT+fV==Sm96+V1iG?2H(myd55 zsUSD;17gxrBC(DzjJn663A`2DjS#nla-n{DIj`8lw|F@oD;Gypsq+Sm& zbO{+@k}me-!42!3wQJrsVU%v>36;Yf4j?NIy!hedhbeScj_a?;#Dp{x+Qi8TGR*_>VQU*L3B70f#@uA4=IW zp{D7Lw@kRjn6$qn_B+McP#3O$jbMbC=G={}F(5J3QS7JoYyYxkg8FL53(xAkB7e;| zJ{fv@qk+XFP>qLCIm*(7BimHHE6sl2ph_4juJy*L=)}q;!>91piZ)Wqk)DF+ml5Um z9<&!(vAVWaV6TGvcph@c#77i06Fy+F^KsYjVBz_ZjX2a>pjQaa)MqY|ca(c$KjH1Y z^O8kgj&YtlNXOiR4Ck>E%c(Q!yNyWq&pqBBbOkZz^+^j7nR#s!T*d5r^9|2!a!mWo zZFrs>?Yw~+FYyYjF`z1y&o6fGJzUb&xr^_CV^RVne36L>dJamGAs_nCt6%~dVKdt{_`Of z*lXcBjd$?(eZ14=f~P_FmzVs-lcp)(I?)eH&Za$G6zdz4QV&<4(Pfa`lNQZBusdt| z-t9Xq2v*nBwzJq|Kcn*|u8kQ_E~D);`q4A7s;1+Oo{J{9|D_4LIo}3RdYAfd<@)hW ztX?((sZ(4Js-A-Yr%j&5>pRrRA^b0LpaSkh^ip_&MYXU#06*ljGfnSSG5b5lh0 z4mGcM)@SqYg9z=t;9C4;3>b!(tAd2$(u?i6g~rmC^nU@z9{2uQ#oucD|4w#>YQS%z z+Ar?%OE#iUj~DR-1g;i{`9Hr(8_lV!$EACzh5oZ);8$y$5C?N@#Gcm|k``0fvrmw3 zQ_kg&mxVeWekp>AHn*1-Bs>p;$$IOQi8rp7^+S%jTzofmN>Myu1B63!H?rqg7o4z9 z`pe`S64*Ffi-VIJ!vd851_WlHGj?)l`_QKd+Pc6PY;7f+9_%y&PhCD0_U%17T4V9G zJ}!N-k)v80jfmYi9WOID$x|&AhwB{q>M?8#zyH6o=%!=<7&Muf|NnfC$1odHqf8^3 zi&M@=G!4Ph1f1Dc%LYip0CC{Ze`j@wRfhptcFYoJ_+|-79N2w6@bhkrdhY$_L4Hbu9}TBZES}${F|vQB_?F z2)`Ms8}|C1F3y_<>LfvgVQP;iV?RO2LJTYHHAn$)i|!iHm5@N`7RLW&<-@MXvuh=< z_yR|BJyywcb{;-iIP2Ot+d1jpKrZ>L`sn5(v$i3~*j*I*3jS8#_pF*q%Z|PE3fqBF z?{2qxv7+A{3pZg0jx{by{24m~gok%V1rWM1C2xT6_Gl6{x&$VQ|_UoSCE*F2T7+GgDM^zgCkOsuLsV`~->_do<|WRhE4()ZW? zpV7W@BT6Tg7YvcC$l?STWgmy!-2!Tm+NL^8T_}#KY#MS-Zxtie-Z* z^)xx5>~>LusDZNzzq49DHaaq*tGGb{Et0TI&?CUlvq{k{gNE>Z(~REP6=Rx}7jr_r zYOA6>_wI2g#Bg^nJ@a!k1_!rZ+eq%8g~N-1YHXuU24lk;V~&QWi5o?wrpI8*b2`^^ z-RS))OR+{@4rE2}H1QVr(j4#?JCF(LRfL6Rp=!%rnIjRt8_ye9nRpS4g8@|di~Wr} zV5y(Fr{C@RDMfTb<$RP`&rKJXPW(JW=RH_0VQJ;)fPXeMnX+|@iWRYbR7rJj>2%^A z_wv!%f=-0T`%SkqLeqjFw}?RtKHrDwDm9-V>Q+ckJ0d#>TOT2HK!jw+P1D!hom3@> z+}$^n`O~DoJ6F$)vnB2gT&=bGHodS}#*ka( zQ*)j9UwkfH|F{1zUut@=aY})=#4VSN1Ii`GZ`zOuP{@x<{3xQjYv}8de+MegXd*L} zzHm1oR6le4{~QfiWxn-&jACV2sE|gH%NNTd2jDw-^JAhEWe|aE#jE+uC|MlRN;VT0 z5QqfV0W`*_Ov(DWT~CHIF#J_ODxkLZj%2=7!MsTuES%&R-~HCXJjyV!*$h~d^{OQwP2g`)uGq>H-?%qAj0~q!m>3AGYOW2mu~&b(x5`9LO@W zT?kitr2T`8jN~xusjTzii`&4P9sC&MUjX0@7jcb$Sk8Z0>}pXhS$|T^zbfj#<)RxU z1jYR}Po0cOEK}r)*-)$o(dBMdckQCCLwUb>9B8T+js%Q7GJle#NP=-~9hZN=#%>KXHzw_F*fZ%-TznShoHjBpzpS3{Y6$SN$ye z$_U*SFe~M6Cv$P`A<^j3Awoe$#ZQZJZSW}&fT+p z9r=d-#NJ5NQ`8p(w6p8~^4N`OG_-kh=5yh&1YMAWB4_xCvLs0$+#Bna6e)uQXlW{( zEbbTwe)Z+eIQT1*mp4^j=Y}OaTXh_ZxWP!A)0D3Gi369>#062&Bo^qz7}MCYv%cR` z9uay>zJG6BXQb?%ky>-MuPmzjT)TNFiFPid5f6Hn=CwT+{9MEcEKaP9F4DK!bKL^F z3Ud;}_Jx21Z6@Ks<=?Y6xFzQ3nl@YN1YNX(p1)noxL?C70^MF&^WEt1CSDPPxumTO zbM}dcpv2iL4-E8%-GYAUfBA0uuQEe|$fBljd&=Q?)3SQO=E=9$10x$j%Pa4pi$0f|T(IX_-vOV4 zV^5|zDU3Z5YIiJZAM66-vCT7<<{;t+712J+lldpUoZ%*?Thx8&w9hA+p4#@tE|dGeRpiiWnLPc~knetHZgh#0n;roim0j@5T824q5AA-BmHFRVUfTR zyk0O|ldOPET`f0TK{h6wiCp&XPYWC?nBp(urQ8-|mQ)=(jf*!Ea|!+V++H7t*H1gN ze>P+^Va_EbtsvD@V3r}1WKk%`3w@a#pIaU3Bit@^|7Ix8W?<$^oE9b~i=|SguKE;1 zxAckhjw98D^^LuiJ{gXN zAC!lj-mhqJM|<>|W{88$Rd>Hdjt(losOW5zSKcxSzS&FL^w4r$5=F<2`hgVoy%QI$ z%BZ~yZ=h6k0~XbbRGuE6G^?5AB&ssVB|oISahu(dYx0hkpg{JfBG>5q+6QtnGO1Q# zz_E>eHjQ`MCnR~5o>As5=qP7shA07WlmeWc`Pq-yR=@XVRl2L$%G~;J%t6?@UZ9KW z__@UfSH8bL=cIy*q2)7YzHYPhq;%UlGd=-vdg24;rHz`du5s0;gbgpyI!k%b!cmQrDwCT=#{xXa`CZ7R)l2?UEDnQky+;~NL2NQ_Wq#G3a~?%27qSaK-Edj zZmkotJblPy&iNQ9qxoW#fn8<-64zPE@LUAwH(_mQw7DB>Dv zg5P?d{tak&NkH)tN!trHJf%IZa#Hp-DGn1;<~LH87$f6#@hG$;gCv_;^SM> zas=GG;B86Mc*Qvv}_G{<~t1jzfm-vrLSZDGN&{+H@3$H|PReP}gR$quAV6(-TlBgau z9@P512@5OAsDQbAQ#v+clYzfh^`Dwo1!#V}(|2*XD`Wbwj>5^(*F~5+T=QW*g15s& zyo|hgLtu35qP7`c2BGqMQMRbX*;`|kz~G8?u9zv$%MTpIOh-+{MtM6uQ#>h4b=o)L z&!Mk+=ANKX9^5__s&uq$GuKNu0rU{1vDmKt!j>Z2j9)jCZPfv0uKf^$Nyli_2W=H5 zO~p--4%XPW95UdhR_o1FuWCX2`VsA-q7Hl=!X7)f-_p2|TOxMOATX*|dWYwR5&Uls zGZS>S+s0#?;1xXLPmZCL$+fjD_O7nbL|=x{<31f^uNHlys-2ZsSmL|=MObORU~A)( zixDx`WaMe^YagDjEl>$oy2HIA`ifa=pyq+2!zYVxM`PW?VB+uVpOCxrf3DJ^ukO$J z`^0^hwl&`m*9iYDCh(KXkzz_1V${E#T|P^MZ>iJ?N?5K3{#QxMEmCBCVEru%B32F!lE7lb^e}@Pk5I0+v^M?8(!S|iwiwTAL$H;IB^pLdOk0G zbtITr(iQf)9c8;bKA+bTsSKa{c+F_KcSc^-WCXo}QPBRVVBg1Oi?PRW03Xi}6O39o zlzZYTsQMWkTlBljHMO4P{@f6^- zeZKDzNqYFkJmk;IR6c0{g;BEMQtId?!X+MFa}|?Y zZu(nN<(L(Ze$g{76U?R>@y#Zg`bNaHNV$TwI6hSM31tVUpqcyF76{2VXEv+#+>mU` z`2;(w=OBi>Rgv55glZQ-k=PjH#w5^J(a=iygVuJ1bid`bZVWJ`$FWrgxM00nshYdz zJ^S~!a7z70-=t2$pI+DpZnhX@W9xl!Bq|4yW6t)xt!fxC?$T7!5S_GiFg+8B@dC)+ z=yly8@!pu749Y z*xK4wS(lafq?@-1Q79B zGqsf5UK#N8k&wsn;O&cna#5Fl75Yvqo6P*N1K(pHbmgdQIxn4$cQA!3|Edj*0)G#q zeD_W%*#`QcV0}Naa)t{Jw09`Vo=}ixNB54LoE#HYP#0ob2)eZm$yf3@{#f`NcwqYd z<)46J>cDg-$0Js~w-XUFcp;=j%ye>q2oM$Qev5Hn>pvE(4&lk;T#Rb(Mp1Nzjo(8! zv>0NVmt;i$s`E!>+l%2IXr8Dy9c4=aL@hvU>sCJBrOUmxi^X2zgY7Et@+K9Nz#D;U zQcR3V0^>L==}%1)DKo3Nm@*?tummPOLfoIpjWasc*SOWJEF(@Rsh0(uqygi8O~~g7 z=tCF!8UTSBx7PBs*w)7TWEcFMHAlEz!$u_HXiqIE_4FFL$kLwF6+U!PKnpFHdy^mF zY{ILt`TDXMyG?_bFkY);##RGCYf*!TRz{e|u}Rr+yV9MDJJ`xv)M5d(+{8}UKe9wt zE%DGdAPoy$?l`?`YL}Z2%H@=|vde9e^X{^wS3!VMLWV`tmSKFv`5u5i(*hO5M}!Lp z0qv6Fwigu>I#vu6jDByUA>8Y}*g5Yv3FN@;6ZA|71J)y*8tM%%?wn}94Q@4J!8H|5 zWpWW3a*@kXqZ%DoU2f#jT57aH`Os+BpByyw^TM#{A(vZTx1 zVXDfCWnsL7OA2L*!`n#KeogM{;o07w6w<=-J#w|>JO|_(ZX+V%dx>~YlKbP{?T_hB zqKb(w=h?g3m6fR;rd!Q+E{aiC zDi~cC^m5yzk)`Qy5Ur_K!g3I$N-HysHAs5B{ zVgg;}NanmNZ7SJb9=vVZ)y<|r3M;GKT*5&UGO0*sJ zk28g}$B5;;wqI1eO++VCYY^oCglwb4s~`cD_Vc<3jhS10%d`g5UyTO8YPx962M3vO zNA15!+sr>MnDR~}SZG#x4x0N=!Eo~XyVm8~-paNOz(R%bHCuG)@5iB2c$4>Ao=!@|6gs zpHs?pDkAKx!<8;x3qG1ix#0@Ez_&~KWvd5Bl!wvaqnJiaqBNP zj@G!Vw2HS5SgJTl>tt51Whn>#_+f^VR2@y!Jc{=&9ko}MzE0M{XC8+8K7}9rVCCN} zx1wbiw?oRwh3e$39%MsPV+bUQBj!yaTH-1aeP9nlbyZ%@=3~U&qZc~`ABB9bqTBNR zy0adap%3#q$OV}mIq<&Dem%%I*=JcZUoV&vdxj4I8Ihs;&i_-~@1n!bc{utnC^9cu zVE#E-y^QI(gW9J)j=krJ$5JR=H(F$9A+O64!Zl&Ai|YT5{oM!We}HODA&18$zQaE{_ur`5Y5U{#EaC zZ)%6oPQhWJvy*W7GnKlbu4JJtD=8*bz!wyM@140YP}JI%2~{y)Zm`LIyRf0x={ zW%!pI^hT!Nc)c_k&PzaeD_aMLYvoP)Px$UvUwwJD$F5!fb&%Z)WB6X`2sJfsQ{wHC z{RIdEj>U`1KYuwf_n3%zFCOd4qlFCfJVSdApZ)70%1{1w;Q0GF&htx?S3<56vC^pk z(m((hs09|-`g=jODnL8cFavmQ?=ZKM-sML2Z%5JaY6+1)SMa|Ya}KVABwsu(Rfx5u z{J$J~{^vBwc^K;lauWlF=Z9H1Lf~R3mCfVjbh~MG-ccSOPBYO}u=n`V|8wq59jiq1 aWsGZn7BnJH5`MexrYNf-Q!4fJ<^KVF0yhx= diff --git a/doc/img/result.png b/doc/img/result.png index f08306f9109fb2425d69de85dfe295a4734bf9eb..99a071b3b3049007ca5b0cc487e753acf017746c 100644 GIT binary patch literal 26459 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 literal 26139 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 A4FCWD diff --git a/doc/img/ride.png b/doc/img/ride.png index 91d80ade70278958a89e2bd87df1192ab387c2f4..030eeea317e8fe783f0ea5499b740cb205afbb68 100644 GIT binary patch literal 21677 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 literal 0 HcmV?d00001 diff --git a/doc/img/sign-help.png b/doc/img/sign-help.png index 8399f2192d61e126e0e5733b2861edc30aba8318..2c0baa3799b37b52b1bdd1d9d57b6d0edf84b07c 100644 GIT binary patch literal 25321 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 Ic6Jg`kTBx8M#5PLRdj-4|GFfrXcx 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 diff --git a/doc/img/sign-learned.png b/doc/img/sign-learned.png index 5fa66c85f8f7056083884263c5fad496253e09e1..cb87dd5006d4fa4a629b3544a91ce08c14ff4e6e 100644 GIT binary patch literal 25529 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 Dgo|S8 diff --git a/doc/img/sign.png b/doc/img/sign.png index 431b1ad0c777af265ae21299bd17056b848b3123..21a02c65141bc612bc464d7574f4e62f62a4f479 100644 GIT binary patch literal 25807 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 z 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 MNhwQ~iW>#|e|F~xBLDyZ literal 21965 zcmch<1zc3y7BG$if~15}14t-cQbU830SwZONDI=Pf*=hBAvtu12-0x@0m(rrY005$ z=wW95=)LbgmGQm%|94+8^(@a`QsH4F^Q zKQJ&Z0&p*$wNy!|a$;a;#@>~a(eOxFPn8Nalqc^f+ZE!t{DEA-mOKiT6pGiyZp9)L znDa$Phb!Rv<-iy6u_2^FS6+m2a_Z}T!Mfj~u+Aw!qQ$2yM_!DDKOb1#;z(iJ?YzmkgLJZM< z1{s}8%=y$jJYKs<{yrI^jk7;{D&XPQodT-}fk65SaN2kYzLmFQm!4jd#!SC3fMJCp zfI*Ex_`QmW;q`*rx4Z}JuM@R?RBowe%zrSJLtOY$qH5cAwasm;>1db9?%s@Dcq|RR zC2?L;c?of+Yz)uL%aeSF)PBpYjoNmy0^LVjjm`{$`qi(?h}E4xGh@F5GI#QnmS*21 z5cn$_d*rebGE{8QEk0gvEJTL;tvR+Lu3Ny>&t;~^g;T}1d-v1viuCqt=giwE|59E0RMy&Pt+C^R#2Dq? zrNL_0vmngNIHW|(fIGk!4%cU;TLb=MLnYHJWl$`Qd12(O=*HYIQ+pn;Y9Z~y;OmoE z^BV27d0e3;U++~_Z@R)5EEuW5x7{A1kVCdheb)Ulc#>MLk#j2v>dw37 zC-oH5_k7j+!afaO&9WKOrN*QE^o}g;^>fBklps~Ox{r+QXA9Kt6o_D~} z)mu?0*XRFiQ2#aTiuXyQhqje?TAYn?#blH0LQ?Jn0||>ZJr-v3)Qtr*y5H(W=k|_i zd(+kBKkBv+p(v?+XQAtU&E*VzL$CfGm-Yn$k(TKDc?_P<2eY30_yVJKf%Haq>r}5T^sbhSJziLE?SC~!S1c9p z>}-;b9%xK|)ezsu*#$$IxJtNM&AUp%Vdiy#NL5+$vDx^G3a8~v3CHA$$_s8=B7@G) z0fX|c`0J{=k_SuAbD_n6q^s0;*!nYLbe+8$XKJzU%d;{iZjb%bj!K3`OLw;nT|GrR z3Qqno(Q#NxGHIQ0hNze}42#bZc#89x(Mbh!qpq6!9}6DOomyGN)N0!0cV4b4tB_q=_yDY^b1|>s z(C*w3ot_xP$0Ym-rl>Iy6yApwkJ?Gv9UCzD6W3pLNir}5c?Oup;dI?xyFz)^GiihR9V#EpsbzfD8rKZ&Q~q8B%HoPQn67Zp`|7P!NI^UKa9$y#r1W!JS<|6V z5N7Lz*{2TD!0Ui3M7TIVREtQWyIT-tQmES9P|r!OxhdA;_iTMn=6bX)x_;c2?S=Gc zgCe|Xdidk#3&hI+puKMTyckWd_8itR7QI#x_AwFeC%PiQ!juZ|!S)LGQDnt+;hPs} zK&8z_$0KoJ848K^LhRL{@jemjDZZIE#4Kr`r*n3|vd#CO;vsI%_a$-rLp3(9UQ2kC z5)R^yGkVsYULWFo<84i>Vze<^;t>jdgVXaCN6a695vW7CIu3d&ej)0t+9{6PDcp=Y z&@PB6mux2G{dnL%$urF7=5?}iU%b9Pr=LFw(W)gQY58WaTYJ!8a;j)Ef%uf@-&p30na zBrzWBJ81ZO9;F@BAW7Q=U-c{7&e8r6D@;O0-(y zCn9?Q7_~t+*`zs6X&TAbA=JCu6L~ULV??p>HGe2q;mggmQkw0@d5?o?%~ML~@<2hq z;Qzf^SN=ENKaqjMJRp{%R^eY}#4$V^FB0`Sxf9VmOu4v)B7&gYVm86CRq{IEF&*k+ zQahvi)<_3ueThn?`(DG-GeD!!PL6fq`j#bmRIY1 zv~b@>mj)d=|KhH&TEKI36R?CNT1L@Z-*}D*NMGMWB{#70B94Jm}v;&>NZF=J8y&-id+L1Jkh9;f7sM z3zG*1)fE|oT8A9rD+XTI%6KJ8<~n?=q(s^IIqD0?k&HrjEi|;wfV9CQb&B?~YzKci zpM!0>eulgy&?8Ni#lQD;U7`5oQz@9F4UoiNI$Z`02uDlH&OU9u5R8e3Lr%mBPz9zt zNPln05)95#(cp-^6elA*&G-`LN}R8@E@$9s8fLsmc1inK^`Swwt2VYBR^dH&NaFsq z^F64#shzmb38$ccPoBHIx^qd?UfWv4kU_m_Q-71BU);ozctAPmjdKKJmnS!cdsdud z|B2P@H#EG$Zt=AYss4zRq^Zy0pmfh`?sVA}Q6YT@N3LB54F6Setbj{sz%KH4xSLXw z6Y-#Gt?qOvc7||ZFP3Qe|FIHruWr+M8z{NZ96qed3*zXj4W7tn;dNV;e+cMZPpFUL z28T-e`Ay&bvdysdN!&}?n6<=tyXdjuqRq0bNXO%a56&;KU`LJ2lG${lOFQcc@G61= zOf{TrqAOOvfn_4BB(zX>Jz!d0f^XoDo6udre5U8~p+ERE#WgWq3A?lWG>hbMmmK{k zqf$J5@`uF(7AT?O+NqGfsEBF#=sFttOudHgJxmR#vk#GNrHhC*HjJDQyF)&S-}%8E ztPXkpo-eX4PhYUA`Im|&YaKpHGkjy|3AcN!qOtupAVeDx-rQ5k2~%ehc-bed_~g+E8-R{RSgy`T7_IzODc5ly-|%T7Wb6rl_;MTZ zh^0a5xb{jWSE=RcpR@1Wbo^aIa)!gHyPF%&d$xcF7isFSo=b^sLJsMr)al{GaL^7? z_VkLB?_9`M#8wgH5c~Wz|6RY|6oKvY)^c~(+K=xEQ8)b#P~!Vhmp?J#zLRf7wjl>C zQ4D^eV9A}f!}h~rC_E6I4*9EdlxXlgg|~YoDc=?BhaT8vUjv8d$c4Ny*V=DATqG0^ zU>Tsv*~1Hr3m%qcH@P!Q67;p=?fsjWmzuPL$?u1o9eJF-rM4ohyrhR&5-=idlP)-b zuIhzJC?JjbpNk8PG}zdHcHXNi5_}A8Zs$>-EJ~_}b8{#3zL@tsfY(%;b*Q-w0@QZJ z(>h@SUTM{%hc(bsM`W+0e}mLCIO(wSa1ma3+{6qZCAu6EB-_d``@-Q4@b^`#*A5u} z8K?irw|iszJLIFNM|Smg!Nz79fmw=@-Y^iN%#jS|4C33 zX>{_StU>h&J#1#?*aI2v-SPdMUMvJ^Gc`b_md8#BglL$LGg#7Cp@HQw8mp(5{?}!i zJ-vCX9z2;Fz)JK-yW3~{bUPUdOnj|k;6)U3{{Vh^A-;y=HI2GOf^`w;?9vy7)7PV( zX^3BwxwZS{HE+kv7MI6kJ)2i53dTn47Y8s1|6@UbFbsp2u6TM?5k0Ytj!DR%eN|T) zL#Gy>wK;C#Jk!w1inmryw>CEDHL?azrSZGpI3{4j-Lw6kA*?PMW~m2_L71W<$E4DX zQ8TbLgzoYIn6X7r?%QEO_P^)Ne`oeGuC%thlvc);5_l`@guWt9jlaxz7^-x~)h@d( zdf~NX^Pooap~fgl;=PmgV+}}z#wcHa5E|%rxp-6wWWFiDvp4ME(QoZNtvuS59JCT??+>JGk22KXZ&IwI4hRgnXd(Xg@#7vV> za23C~?hQ|9CTr5@C3@p0^hk-i8b9(Tj=9vpy6MeH-e7~KV^~_6vGSJDN5DHBZrNn{ zS70fonS$PpQ(ew$8GUm*<^JnnJ~&HtXXmjv(#Oxqi+a4jdD6qjiL^hudg7SW3Xnt?V8snw9=rMWt5Zew9(eW>y61RKf52#*37!eU~7o?dcP zOgQxHxMLQ+48B5gb|gCf*ii`P35z$hVz8UAeKt|a4*YfX-kn3dIKh%S8~hj<{GbNe z1TGZ2jQ;htrrTF>IZv)t>c(H3(#RahzI|K#!iz+_E}@6~(GvVYcXy9D-`d7FFR@b7 zHXXNz&^7X{YeG={uIYRGIj5TQA2h%@hf*z@SK%B}eIkZ0UfkKaO}TpOxw0pq^KR!n zkca|o*j=xkc_-T3+CPm20up~$BELh@Q|}JC8TimfMs9z?*iO!ez4nx?J3O2i`4z-~ zToAvJ?!eIn3pu(%Kga*{Xrc1uVV>;_{Xcb+{pnGe4`v3ud81G+T6CwmeRzYRP1Eg=#{rwtSql?0(g?z0n(wS7qiHkwgK8E~qOw+07`W z=r~_XTmdZVi-ZBsrDf9@2Ci74tNMb{*|KjlT*WI;y%T(!om?&B1zxZQ>z_@L$_#NU z#P2AuHc5l$OC=MTy9NUoti%K}27#||Tq^x2ZpF0o?4u%vhSnbQ_8yqbk&P)o;Xc8G zF&UIP>Av1jY4qWqBt-YvpOC8K#G?L-&DJr+D$gN5cQsF`85GGcticjd z;LIBvMvNO6mkUHPCKrse+LWXT877mUPK(#4y35sYg*Yu9UlmR04E{(tw0Mu=!hdAL zpZFMqrJ2xsGfi!o0VP%3jbBp8QnzIkGJ4om>NB+T+Kc?c*}ec*n8!mON7aRHKjv_a zYG1906Sy3bP*nJ$`${5P$455U$Eu2+N6t};>}Bm^Bl&CzMc02b8h^88nSyx$JOpz@keI)#r( ziQaqo8XHXK`!DzbLVA2_1>VOj;^OAWI*8D=_Ru?*FE;g(49ZsMmcCOm*SB?S6S%6x zBh0z8^DbkWWdhdeQ(^0g^k^)oJW}!rCElSbKYAPEOP{a>nQ-4S6V|Nd6N%%<(`0{X zFk|sO6v0bCBg_J z%@--QI}x857YRaNg>wuzkl}f82VTrr!hJz^5?6IQ+zIQJ%L7@ zp3@#F!>f5)$i3%JZ>C?ix|oFSz8*s!MNk83cLDj~UxtN71z5x}aY6VR%I6)nck0YvDxZmH934R|l|&b#q?rbA1%7uDR!r9g>Y#xo%h}K!k%k(x_dXsi47<<+J4+#C z>ip!LENJ1L5xBIjlf3xFrx4!FLK#Dzjwu_}mJ|fRxI+J&n#~m}Eb0J-bdukk>evG; zW*?$~H|4?e%?(_O^VN2*4wH2D1nQ-K+sR)KIJu6M6#NVgm@Zw5ZoWpu;KtbGz?_$i z^E>+g<_$Kkzy)P#vH`50PMBDGt4pIdBM%k&lTt$M(}9`2W6lLoHAPz2@iKLOrvro4 z+IzzVR3hHo`vy6yLy;*G30|dYu8$S^)9y#OiaQw+r%3iPs^5N_stpUN9 z_&C>yH~~7qw+{cgp{U$J`nSu3zh6vf7ZHDc3r>-Si0zf%{Nn9fd6eSo;rz}PA5Y*P zf{QRV^=~nyd*@IrXha9*lC-3UfCj5HMf8QJc!*T;pBL`ds@0$~^hFm$|(V z7bDIPZglKHofb3RASHH^CF!av8D&I4U)JFhxRZ39URh{Z_t*+I9BTh~V;1Qv zIseA3U&{q`xjR#2#%yeE+e1+qgj9}n9D~Sgo14-{=qFKO$ zz>h3CV>^C<0_16+PoI3>vC-3CoOxA23Juxjy5JOkMME|!4m9BGplh8FlR%V_WfQ@& zbi9yFa-Fg)Qk6;B`VfM1b}Fz|x^d)O;Hk zUPL->_)2FuHF4WJE+hJl&%W=i7>9@RHn+4*r9=no2KJ3KqVgpd$e{euh8@1$$7BsA zvi(sgw`5?60i$x3{1q&jZ)J@_YD~m*k~N7HcjDbBoc=2)^abF>3sRCRBD1)mPa`8k zWgT#$rTeLBf^RUs;3Fk@XD)u7%jI%aC1i@fk-t&QxG{T}KW)WxN+8GUy+koKx^*!= z?w(_?Wo1Fm zh2b10E#Ts`%;v{JfnoSg`TNDBIxoPPwnz7$nO8JgnNf<65GW-G7&l$Tfa$`vkwm5SGi+(v_X#Rmqg{7=SQ`yO@{4{zrQt>ZIS>7SH`i*w$ z?P#5S&&%T*IJIR8P3 zoY?(VJyn!Dc(_J(j|#CHr}gULG-L8&wKN}EE7MZPJfCGsxhBfP2n;rTl^@3^m17n% zaz>Wb6NU`wtlz>+iL@zt)oto`EgFN}sUqa` zR&1>Br7^8A2-7bJJiRo4LH&PTIlP?CLVOqj!ntMH7>Rm(ig0f$utzcK?IXA@v}i;DZu?3A`2dj0Dedk%!>hgK9bon>v2@gVi)qO(yUdzG<@rbMTkMs|&r z#Z@*Inr}gKTSv9IkYcyYoEod+Pg+{9Dbcsh9W;iAO&nC?Ak4#M$p>%jCxu3PJlZllAl&_nS)hM5Hf zGqb}H%(C+#FC~E>0kIosT;NcTswGjzP0`ss!Dvl+Fmi0=S)LJA>!pHcLo%z^U0;aa zq0J^z>&(oKp3Ge~qB=Zy)pq}W6JPv#NIgO_s&T0!BeinSE&dKa(mucN>=@CeD5$y9 zF3--b=J+x^Lc<_?j`8YWO~VG+q#o1(Lk~W`ss^1Jf4hIWQm*mM8v_`wLG)KCLeXdE zO=g!ytfW?%*>ne0AS-~J2oERt+4t&Do&&*WanXH73aQ<;fZ7L63TG~Nv&{u9g%_{* z=ZSDoyl8CUwHpIJbn$nOS&xFBiM6DDRdHacA)CCsiRC_5R!fG)$~!Y!_v~>6{zBpJ z-+#kMr@oa$94Bj`i*hRQ>()2gN(-i70=q1xNu;Dt4F(R z&?A{AZ?F+8Qu)N|iIOBB1|8e}9EhK|knYf1;J~@b21w|+5jE=LhZ2fHU59Q#1-KcL zLz2%v@56nVqqkzt0OB)44+fncANd~pDj)kU!cD$f#{wzOxQ_5AU8Y~3Qnnk^qYQDJ z^3kY`Dio{HZhRD){}A))qYrk{oEL&rH8b$yRa=POR9w2Udg*EAE!jJ~nK{o$6J(sD zRa4Wxln;vTZ27V%ve?-Is!w1?JD1Uo+Am_I;}>iS+gvPZ-C5c%;%#_aH+4^|%WBW& zRO*>ZUc4A~QQPcTYM?hUIAw~>>nYhzoT)R;*;Lm{mt3O1+JLvT(=xNTmaAS71WNx5!EI-ps5B&F#R6bU87v!q| zV%p@8QcsY6U`V@DH2m7}MRLe*b; zj&B=gHI=VYL*^OwX#QkLBv{ak`T^u48}Z)Xdavu8~M^f zB;M~TQHg60yg2NdT*OHDHP~9dW$Y`_d#(b)Xy{Q$hu%S}7Zl;-(Q2D=nXudswp#%I z$L^LzM@``k*|BPb#ba8t*Zr;=uNWGF^?MCy9l+bFr5NS+4DT~61n`V zh;vEv=s!jFO;eQ!k;s|UtaKz*GUDZYjngSw!3;ez_$(Pb=Nxu~p=I--==NnDcD4sy z3dPJx$oRUiDEk#D>Jck4=2FTzmy!4%^F#K04#NJ#Hh8>*3fX84}tlfhyF( zQDul@BNqohZe?`wBSVUS4r$YLz5z-r0)b1^m{EUKFI=i?gg-PM&nX~K1gE=nTEusi ztBJTlwvV+2?5RMl*IT3JSvmeR1Tj{Th-?R!#81W zy_PBAYh>DPe93i^;!>MX7Q_iB!pBYY0zV*1;WOvZhTVPs$CA473r)fY$6fE3N83+^ z8YJuFpIh**Z&JDOZSZ6)Z&KAg^7;^6OfPctntQW`qwwaEpQnXT?h`^XQl*-p#OQ%Nokj-_2>2)c4R z>g6RNpL_1J+js8)FVbA?xp@~|bZIY%Y*`8`2^WWih!G$M40X6Nd%aaA=-HnQHe|DJ z`JQX|=d1zccOCBRHs8*%&{~^lAL1#@rgq4xrkjUVE7uvM-_2bhg_kV& z5ugh$mht{}Xr>k-vhsCZUoU=SaVl1|sc=PXb(GY%zXVg{_@YDlm+<8t;G*)sFg`~@ z1tWmo=&ICRe~*+KlthAh&D=R?T^qjyLbEOlpyh}hFo|v!=xJyhIUx3!Yq)kbh4MBo zL(o9r-VRL6I`_fW*IXVXex*tZO*k~jF$B125f(E3{4sbtE@ z1~PSHV%H>Nc9_^YH_^F$?VhAc>LNc>V>IqDpi+FdHm_jQyU=kp7LuZFsQvdvyQ6^e z&fbo*h!Em|s@vScUWvecxYgL}@rnsa&otDA^T}c(;MvcSJ3E4aGqr-K6mV-d0W`~* zKH=ENrO7DKnlR5$9W~q^CdXRAe|bBDCllWEyc923w>z|-0GII@5QP;*)zKyK2C%im zTpQNa2Nj6`K)?&TJ(_fBJ`w@wQbxb0&zc6}Dvl*y4epi7o4UY!QR~w)R?*Zor)xZ;zMRzfe?Eke zuMQ5a6(CwIvirv2Ig&6VFr{DUs1IsNWsIw^DkMDkrHA$-cE3+LA~qd9^G-%{>wA^! zTB}Ffs_1fUL1Mp{ao=q)FI>#V23Sv-x&PeBA-K86F2~NU?hrI-4MHs+BR3k8*;SaX zP&h{9ZF;ArjILUHmnApXn3OcWQ**PtJ-ZiKQ_@t+S}(XZWocvXzWq8^q!6TnPyfez zy^^M|2U20`U>9E}B%O--hFkr5bmq2Qy??GVDj(uA%yQa9Pls}c>)1Xy73X~g6K0rB zgX!&PJYu$UEum89fy~5Dg%xSGIe$;J;EJR?Z->&gO7o0v1Jt!Km>-!j@?EWddy_Bj z3tjbFkIId22|2H|B0WEFDmDN!QUnRri?&!8za96&&+}oKfnaatDn5+yk~O;=;GJB&ed zu}_OOKcG<62i|^3`<~(F1=4x4;6P$xHope$E>DX#J~bA+%29rk`+h&!%~jax z!d)(Gi1lTVSgdgzx+HHwmI0Mn2fPqViFu08k@K;lkA6}=Gfczt~-hww6 z8B`jU8$D-O?(Tbv2*pbtpGLg9FDIuF)A50y`Pba>?>X3BOQcpmZ9DiY1H7CUS5f-r zqozldY-jw+RA9eyJ>YU!9{Nt|kXY2{GRg&LXYcS*LXdjCS0K3RvgH61zP*cH7aE@$ zN%N#r4B#)f?|q60YSKmVp&|@#;@Ez02>l_q{qG!cqiw7c*^7keHW(yDJ1~bv*!$P_ zqHvi)CO_)R!gBiaihQNW2r~}Xr(|r%WB|{1s;t8Z=j4gK_P@55&5n|k1>$0pG=v)~ zZF7g-mROd5EVx{HyN|#kM9IxfSozE8G^&NKo@)NG%Us7;Dqw3+5PY3~2wDz7!2z`9NRSQ} z!mdW?W?$Zz#_-mAu;*dFrSEE;(Y`i!_`guO;JA~ z@h3{y*e4!OCB98OGr8mKl_xrOFqR55QCW#g7nRT3_o~2-Qil)FhXk(9K5B}e`awnw zcs=`KJtNL~TulpbQ#CHbb7HvT8uP%je3wKj(pxQj6;Eg)Nd&btVubXMa7*HqMzQrRy5+i*xFHsxueAMoo zeof8C^`(-xu z9IkQYn`h{a=IaMMUMjz_4TRC#2AxPYK*22%+Q{AtM>-gBWR8EWG${mi( zp_kJsI}&q!iPd?+mYKIqTQiQ*2QAHAFD=}G7Lwfq`|VP&|X zD~np)a(7v#i*`ahqkQ(z6Zag%rKv;yA-_PzP*v90@ZeX}?T>FiaN-sfc6MfQzL~nb z<$g_MI?(`B>ML>zI}D2a^H|rjSbS#h{fdRu34}WWOK*zl6q~IjSBrtJ6tMSh>8`(a zqwgs}t!g(3<$5ye?n;#Kcf~#)@iNqd6TE(r^xi08M6!)J+oEJN=RJh?a)IuetMvxI z((NB_8GQ(!O!T~N?E?sDTqyOhtC}tKxVJwEAgv;RFnDn1;Fb6Zn$iCz+VY#=G7}4a z2s2aH+P>i3dhw~rR|0-9jSG@J?arV=-%tj{vsF!{RNw0lJsWPL`JdKzs??~7J6XXo zdNon!#Wq@C1wvdzNe}-#M$k^5|e2dmPn6idU>tw%GxlBWs6-+ZyYvN128U8-- zOEtly{pzD02d*36?n+ef%{&aAe!05j0jP?;K}%IE!Nk0@$sMGBuh>LZ!p*JvhCG_E z#J5nzwcoQ*;=syUepiW}LQ>EfG(viOa{M|wOruEiu5$d$i3X}fXO(K-OSB|6yE}3i z^-{nHva&K3htIZBSr48kjl1_QJ}eV~nEN)IEX^=BWHThBv-w6}s>1up>a@&M;{EKB z&iN{HJREi4o7NU`qFe{w;AdKA-1~RkWUzITzXclZCjl3m6Zt z+o4cp+1);Eun+t;J;Jf8b=FVs9{akzimBpLdAtX z1csmSyZGIFoj$OVlZc$F;6*+%u*NMVcuzV0=0*Q?S}`by z*kRl+ZN>sP=PH@b1bMQmB0d)?`tr_1g2;FAy$dVHi(Fe~KpY0Q(f8PEwj2Ju} zY_hY^dw(8pP-K3my&;(4d}>jn8`iI3k+b#mGTx;VFr1h^WGBkz2%%5eKdfcXL6H1_ zz;)=pdaS2Ui+27*!KVXd?0B!X2peNm2JDk3W!3E{lnu zGNgV)$xj>tSDe*L?OG|xy=j?ND4fS8;d#P|)|p3keqC#IsV*>JdJ=)U9%<=%vhOjk zmMCJ*?x&JBK{&cpIJgqK759?v>F%ky;{fB}2-6^l3FaZn!fksi5$RVrVaO_V1(o!^ z7infDalAjIUUyWq--}8EM|K7~cWdN8tfx@g)e|3^dyrq~;jjdRHNxvsBOb?@m%#+6 z+1yO~ystR#37o8rIMIk|CC)`6k;6JGM#Ef)J(cW`#n)OL{`#@IJr9AUtC!O|#{zF0 ze9v*7&X&RF9N*RuavGfH0#6p{9F)s_Co$88?N8;B7DIh`=j`!5w`r|57De8=K>97Y zyI?o2gMaP<>q^P3kYux^4;$;nkVg>#AB>Wb1aUov~e99I{c-6)4nV8wnXutFr! zm7lo*)w)WNeJKI zAv%m%I;KbSMkiSoyZLJ{>|5AMn|Gk6@7UBVQ*D5;&ndh5v-Xg_PGl_WH+EgsTK9UH zrt-=<^rf{MiMO3uv~pNA8Y&dhlUaW1yR7D$VNE+PL?~?n$O}`Ctz;_v5Hu7J9G4iT z?{Mj+U3)(j5K9f4ET0`e`$^Iq`PF0HOikO)azkOHuf1o@2XP6G*%^?rEeX*XL{&lyY!37Nysk0Hp-|%)Y|v7{U{BYhx5ppE_wsCMQ*?bw$Ns$3UB~m zMI?ZegxMFcB<-9o@~yh}2ko*x&iT-5;|1xhMxTA5lM&Y)m|~@kV5%|-?mT5#X791L5;CKN3+=;Y^XnYQD?#>xFG1Laeq{*Z20iq#A*e(Wb6@8w&@zZ+MNxAijXS;bX&|Nz}djt4m(4 zBA~Rv{8ues|3%}EBu|N)4>T_mVu*Soa_j3Ie2{y5Vaki7{U1pLx6g3XJusCz z;7>u=vccYTiZ2yNfMz7Y@<6$N40_=Xa)ZW(n|)b*0*xY(Re6?w3)hc~|CNB{0I`8; zqVv(=^P>2#;CY?vQ)JIHZE+>3tO-VZ;wKhXZ0*}Ks6@QdpwEg9mt=rrvDufyG!uC& z9c8I*C&_Phf@g7mySoYVLgR;pt!VICWCrwk8jY9Ta_!F-i)l1}o7F#TD6iuP`0u-n z&TZfM%d7f&_kGSgb`1|n|tTCx|1#|-Z)426vp!6wpY04K}lpQzp}l% z5)1$~?-USxgFKjZaTbM`A{CTOAS+s#OWwnib_7!3);=fbadt8}^eoF4;@96PI#M3( z>SvRB_UyJD%E9$y8v8u%!Q5)OI%Ku#cct^#9{b#5&uxPveYb6yweT_1_COM)q9TqEyBgPyB)(HSNLg!g zD&aTJSr-}g)%`ZA{gb06=aWzBR57`NW${ADiP!*Yz-)&*voBg1zBfdR3P0`=U#q)}|(e z`P@dFbS;mUDhmraXUGjoMjcB+5wQn8S`-v#S5AH@^iZfz|C!Q1E07tuXZhHNFULzA z70Jmp2U4yc_ss?jtxMjY#fN?E{-rtoty4BH47ffQ?9Up}2AQrG!^?>I4)WLb%_CFy zS75%8zof?eoG9~WjsNWbRsP-GpIJ-GXZZVjNU^GVxzqR$ANe>hWHmFfMWaTJAHNST zFCO1&?gS>su`I{>55|I<%i?=#g!02Bq)xyar$8y$e&V0O?=z~iGknPj76+n_8N6G}HN|B!VKkn7Un44#P`O=kvwIfHg z__kuOqdUg+;SGQ`dwz|~70Xa6H=$%I(?@>%!KQ9gzKK(Fvtv?a=Xh{lME{v;PsXU^ z24vMcoHq7Tp4Y)%cDDKuLNsDjMDWkL|L=2ji&Pp^CTaM=by#On6jmD1GyTa`YVO_R zUMQ@ln7SZsZIEWCdiJ%jDkOd#!VYnHJvvr}cmS%U+lo2NTS7dD@fylXYxj~gBB)p% zUNkqj_0ziVd%9KQztfZcEjn};1_s;oI~}KzyIE8C*{Ap}GayIAZoW3jZALBV8XQEs zml=I9A5I9=TxBB%HyH#CETM|2G(je7NgE*CXU4<$5X9`tSeaB=qeyD|%t)QFaZ!$Ku>H{R-IV}fN=<|*NcPu*eMB`K}I(&qWTKbnw&yc@lUd$pL z{hGy1q}7q%C#+}oB_p1-A5bc+XJ)>?%X20}faqo;i~lB3{HEqdr-i#=-7h!y_a_c> zZ0{~MYF)M^C(7wqTI&<eyJ8(HRg|I3 zXVwjxt$D?kAo|?_E#&rjwe5Q}NA2oWA~X=~pV|6=+tgq?Md!<%SL2p;0%mT0O?%G6 z;*(pj(8yh}&O=YGXH0VmPX$t5GmqXYEA)jvHdMx9(L}ob{RUko zy7ccU_oueD!kD^{j;eQs8|fIIr1%~K;$J6Dq1@X(YxJ(eInNLr;qNXX7`6GjCfJUm zKZJX1x|>E)!6yCRQpBUturXcdR`-PIVi+!N&`pP{(ZpLb!HZ_OtV=yOW^5B;VkWh3 z6mcMJPJCs=;NjGDFG8Qj4iswMj~<4wi{vv+E1T(WeRbY3vCKzxUctKHJnb(ej@VP? zwBI@W1HgpFHV*dCzjrg+|&@vYB5(foMmd@?xs?&wqCC;~yXV<7@4Udtw+Q^UOXO UF*U5;9Qt?VRpd%%>V!Z diff --git a/doc/img/topup.png b/doc/img/topup.png index 07117f07b1fc73b8eb0a7da1be01d730f239e112..70ac398c01c4fd6bf2a48ad8c5c6922e7fa198af 100644 GIT binary patch literal 19707 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

N5C~%Rp?d&@uzZ+s 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 E0BDoeC;$Ke literal 16169 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 diff --git a/doc/mal-och-tester.md b/doc/mal-och-tester.md index 55c6a55..78cc964 100644 --- a/doc/mal-och-tester.md +++ b/doc/mal-och-tester.md @@ -34,7 +34,7 @@ att bygga på Linux som på Windows. | Inkrementellt debug-bygge | < 10 s | 4,7 s | | Release-binär | < 20 MB | 10,2 MB (Linux), 10,8 MB (Windows) | | Testsviten | `go test ./...` grön på < 30 s | ~0,1 s | -| Banor | 100 % passerar det automatiska lösbarhetstestet | 2 av 2 | +| Banor | 100 % passerar det automatiska lösbarhetstestet | 3 av 3 | | Windows-korsbygge från Linux | fungerar utan extra verktyg | ✓ (CGO_ENABLED=0) | | Linux-binärens länkade bibliotek | bara libc | ✓ (GL/X11 laddas dynamiskt vid körning) | | Bildfrekvens | 60 fps vid 4× skala på integrerad grafik | ej mätt | @@ -111,6 +111,11 @@ att bygga på Linux som på Windows. | `internal/sim` | `TestWalletPayTopUpAndPhone` | Kort, kontanter, påfyllning, spenderat, batteri gör kortet i telefonen oanvändbart | | `internal/sim` | `TestTopUpFlowAtMachine`, `TestTicketLevelFlow`, `TestCrowdFailureMissesTrain` | Tomt kort → automaten → påfyllning → spärren släpper; **hela bana 002 headless** med fel/rätt biljett, trängsel och resa; två bom = missat tåg | | `internal/sim` | `TestPhoneSpeedRescanAndBattery`, `TestRideWrongOrMissedStopLoses` | Fartbuff, seedad omskanning som fryser spelaren, dött batteri stoppar spärren; fel station / åka förbi förlorar | +| `internal/sim` | `TestDebuffEffectsAndProfile` | **M7:** varje debuff påverkar något, kombineras multiplikativt, profilen förlänger i stället för dubblerar och räknar ned per bana | +| `internal/sim` | `TestTimeLimitAndMissedTrainsLose`, `TestScoreBreakdown` | Tidsgräns och maxantal missade tåg förlorar banan (001 har inga gränser); poängformeln och avdragen | +| `internal/sim` | `TestDebuffsAffectRunAndAreEarned` | Skoskav/matförgiftning/hunger sänker fart, snabbar mätare och förlänger hjälptiden; många steg, lång tid och tom matmätare ger debuffar | +| `internal/sim` | `TestIndividualCardsAtGateAndMachine`, `TestLevel003Flow` | Egna kort: spärren kräver allas saldo, automaten frågar vems kort, spärren drar från alla; **hela bana 003 headless** med biljetter åt alla, sittplatser, trängsel och resa | +| `internal/minigame` | `TestTopUpPicksMemberWithIndividualCards`, `TestSeatSelectionPreferences` | Personval och 2×2-rutnät; seedade önskemål, upptagna platser, missnöje, fönster/gång/sida/bredvid, Esc avbryter köpet | | `internal/archtest` | `TestOnlyPresentationPackagesImportEbitengine` | Beroenderegeln ovan | ### Planerade tester per milstolpe @@ -123,9 +128,10 @@ att bygga på Linux som på Windows. | ~~M4 Lämmeltåget~~ ✓ | Mätare, händelsefrekvens efter gruppstorlek, seedade händelser – finns, se tabellen ovan | | ~~M5 Minikarta~~ ✓ | Upptäckta rutor, nollställning per bana, avgångar från start – finns, se tabellen ovan | | ~~M6 Kort/biljetter/minispel~~ ✓ | Saldo, automat, biljetter, omskanning, batteri – finns, se tabellen ovan | -| M7 Svårighet/poäng/debuffs | Poängformeln (tid, pengar, mätare, läge); tidsgräns och maxantal missade tåg; varje debuff ändrar rätt stat; temporära debuffar räknar ned 1–4 banor | +| ~~M7 Svårighet/poäng/debuffs~~ ✓ | Poäng, tidsgräns, debuffar, egna kort, sittplatsval – finns, se tabellen ovan | | M7b Tåg som kommer och går | `TrainPhase(t)` ger approaching/arriving/dwelling/departing/away med rätt fas ur tidtabellen; indikatorn aktiv bara inom N rutor från rälsen; vindzonen = rutor längs perrongkanten | | M8 Progression & sparfil | Sparfil round-trip (skriv → läs ger samma tillstånd inkl. seed); skill tree-krav; upplåsningar efter rätt bana; "< 33 %"-regeln kontrolleras mot itemlistan | +| M9a Flera våningar | Trappa byter våning för Mover och följare; `Path` över våningar; lösbarhetstest med trappor; dimma/minikarta per våning; gamla banor = en våning | | M9 Navigeringslägen | Listläge genererar rätt ordning av tåg; skyltläge: 1–4 giltiga vägar; fel-riktnings-förlust triggar vid rätt slutstation | | M10 Story-innehåll | Alla banor lösbara (redan automatiskt); flerbytesbanor har sammanhängande byten; sista banan slutar på flygplatsen | | M11 Oändligt läge & NG+ | Målsekvens deterministisk per seed; NG+ behåller skills men nollställer items | diff --git a/doc/plan.md b/doc/plan.md index e26e443..2d3b68b 100644 --- a/doc/plan.md +++ b/doc/plan.md @@ -34,8 +34,8 @@ brasse-linux01-runnern, inte Pi5:n. M0 skelett ✓ → M1 rörelse/kamera ✓ → M2 tåg/spärrar/vinst ✓ → M3 japanska/skyltar ✓ → M4 lämmeltåget ✓ → M5 minikarta ✓ → M6 kort/biljetter/minispel ✓ → M7 -svårighet/poäng/debuffar → M7b tåg som kommer och går (vind, indikator, -animation) → M8 progression/sparfiler → M9 navigeringslägen → +svårighet/poäng/debuffar ✓ → M7b tåg som kommer och går (vind, indikator, +animation) → M8 progression/sparfiler → M9a flera våningar → M9 navigeringslägen → M10 story-innehåll → M11 oändligt läge/NG+ → M12 ljud/polish/release. Innehåll per milstolpe: [roadmap.md › Milstolpar](roadmap.md#milstolpar). Vad som ska vara testat per milstolpe: [mal-och-tester.md](mal-och-tester.md). diff --git a/doc/roadmap.md b/doc/roadmap.md index 0ca330d..9146dc9 100644 --- a/doc/roadmap.md +++ b/doc/roadmap.md @@ -287,15 +287,46 @@ på **brasse-linux01-runnern** (label `linux-amd64`), aldrig på Pi5:n. spelbart; `TestTicketLevelFlow` spelar hela 002 headless: fel biljett stoppas, rätt biljett, spärr, trängsel, resa, vinst. ✓ -### M7 – Svårighet, tid, poäng och debuffar +### M7 – Svårighet, tid, poäng och debuffar ✓ (klar 2026-10-24) - **Mål:** banor som kan misslyckas och poäng att jaga. -- Tidsgräns och maxantal missade tåg på svåra banor; lätta banor obegränsade. -- Poängformel: tid, pengar/påfyllningar, mätarnas status, navigeringsläge. -- Stats (speed, törst, fokus, toalett, tur) och debuffar (onda fötter, - trötthet, hunger/irritation, matförgiftning); temporära debuffar 1–4 banor. -- Svårighetsprofil per bana i JSON. -- **Teknik:** `internal/score`, `internal/sim/stats`. +- Tidsgräns och maxantal missade tåg på svåra banor; lätta banor + obegränsade. +- Poängformel: tid mot par, pengar spenderade, sällskapets mätare vid + målgång, utforskat, avdrag för missade tåg och omskanningar; + navigeringsläge ger multiplikator i M9. +- Stats (speed, törst, fokus, toalett, tur) som multiplikatorer och + **debuffar** som påverkar dem: onda fötter (många steg), trötthet (lång + bana), hunger/irritation (tom matmätare), matförgiftning (seedad chans + vid kioskköp, snabbare toamätare). De temporära debuffarna från + sidouppdrag (träningsvärk, skoskav, tungt köp, proppmätt, svettig) finns + i systemet med varaktighet 1–4 banor; sidouppdragen som ger dem kommer i + M10. +- **Svårighetsinställningar per bana** (Björns tillägg 2026-10-24): + - **Egna kort** (`individualCards`): varje person i sällskapet har sitt + eget tågkort; spärren kräver att alla har pengar, biljettbanor att alla + har biljett. Påfyllningsautomaten frågar vems kort. + - **Sittplatsval** (`seatSelection`, kräver biljettbana): efter resmålet + väljer man platser i vagnen (fönster/gång, vänster/höger, bredvid + någon) efter sällskapets seedade önskemål. Missnöjda i sällskapet blir + sura: mätaravdrag och poängavdrag. + - Våningar (`floors`) är också en svårighetsvariabel men byggs i M9a. +- **Teknik:** `sim/stats.go` (Stats, Debuff, Profile – ren Go), + `Run.Score()`, `level` får `maxMissedTrains`, `individualCards`, + `seatSelection`; `minigame.TopUp` får personval, `minigame.Ticket` får + sittplatssteg. +- **Poängformeln som byggdes:** tid 500 × min(1, par/tid) + pengar + (300 − spenderat/10) + mätare (200 × sällskapets medel) + utforskat + (100 × andel) − avdrag (50/missat tåg, 10/omskanning, 30/missnöjd). +- **Bana 003 Shibuya** (svårighet 3, fyra i sällskapet): biljettbana med + egna kort, sittplatsval, fullt tåg, fem stopp, 6 min tidsgräns, max ett + missat tåg. Bana 002 fick tidsgräns, maxantal missade tåg och + sittplatsval. Generatorn är nu spec-driven (JSON) så fler banor går fort. +- **Klar när:** poängformeln, tidsgränsen, debuffarna och de två + inställningarna är testade (`TestScoreBreakdown`, + `TestTimeLimitAndMissedTrainsLose`, `TestDebuffsAffectRunAndAreEarned`, + `TestIndividualCardsAtGateAndMachine`, `TestLevel003Flow`, + `TestSeatSelectionPreferences`); bana 003 använder dem. ✓ ### M7b – Tåg som kommer och går (Björns tillägg 2026-10-24) @@ -329,6 +360,23 @@ på **brasse-linux01-runnern** (label `linux-amd64`), aldrig på Pi5:n. - **Klar när:** sparfil round-trip-test grön; "< 33 % per omgång" går att räkna ut från datan. +### M9a – Flera våningar (Björns tillägg 2026-10-24) + +- **Mål:** stationer i flera plan – ännu en svårighetsvariabel. +- Banformatet får **flera rutnät** (`floors`), ett per våning, med + **trappor** (och rulltrappor/hissar) som kopplar en ruta på en våning + till en ruta på en annan. Start kan ligga på en trappa upp eller ner: + under mark, ovan mark eller marknivå. +- Kamera, dimma, minikarta (en flik per våning eller stapel) och BFS-vägar + (`level.Path`, lösbarhetstestet, botarna) blir våningsmedvetna; skyltar + kan peka "↑ 2F / ↓ B1". +- **Teknik:** `level.Level.Floors []Grid` med `Stairs []Link`, `Point` + får `Z`; `sim.Mover` byter våning vid trappa; `tools/genart` får + trappruta; generatorn placerar trappor som flaskhalsar. +- **Klar när:** en bana med två våningar går att klara av boten headless, + minikartan visar rätt våning, och alla gamla banor fungerar oförändrat + (en våning). + ### M9 – Navigeringslägen: lista och skyltläge - **Mål:** de två sätten att spela story. @@ -341,7 +389,9 @@ på **brasse-linux01-runnern** (label `linux-amd64`), aldrig på Pi5:n. ### M10 – Story-innehåll och flerbytesbanor - **Mål:** hela resan från flygplats till flygplats. -- Alla huvudbanor och sidobanor; banor med flera stopp och byten; buss. +- Alla huvudbanor och sidobanor; banor med flera stopp och byten; buss; + stationer i flera våningar (M9a) och svårighetsinställningarna från M7 + i stigande kombinationer. - Slutanimation (karaktärerna flyger iväg, items och poäng visas) och eftertexter. - Överstimulerande UI/banor som extra svårighet. diff --git a/doc/spelbeskrivning.md b/doc/spelbeskrivning.md index 9aab742..d668b09 100644 --- a/doc/spelbeskrivning.md +++ b/doc/spelbeskrivning.md @@ -78,6 +78,14 @@ otydligt står tolkningen i [§15](#15-tolkningar-av-originalet). - **Tåg och bussar har animationer** när de kör in till och ut från sina stationer och hållplatser, i stället för att bara dyka upp och försvinna. +**Flera våningar** (tillägg 2026-10-24): + +- Banor och stationer kan ha **flera våningar**. Trappor (och rulltrappor/ + hissar) tar dig upp och ner mellan dem – ännu ett sätt att justera + svårigheten på en bana. +- En bana kan **börja med en trappa** upp eller ner, eftersom en station kan + ligga under mark, ovan mark eller i marknivå. + ## 5. Sällskapet – lämmeltåget - Dina polare följer efter dig i en rad – därav *lämmeltåget*. @@ -136,6 +144,11 @@ otydligt står tolkningen i [§15](#15-tolkningar-av-originalet). påfyllning. - Telefonen har **batteri**. Dör det måste du köpa biljett i stället. Detta ska nästan bara kunna hända på **långa banor**. +- **Sittplatser** (tillägg 2026-10-24): som svårighet i biljettminispelet + kan sällskapet ha önskemål om platser – någon vill sitta **bredvid en + viss person**, någon vill sitta vid **gången eller fönstret**, någon på + **höger eller vänster sida** av tåget. Du måste placera alla så att det + stämmer. ## 9. Svårighet och tid @@ -145,7 +158,12 @@ otydligt står tolkningen i [§15](#15-tolkningar-av-originalet). - **Extra svårigheter:** överstimulerande UI och banor byggda för att förvirra spelaren räknas som egna, extra svårigheter. - Variabler som styr svårighet: antal i sällskapet, andel engelska på - skyltar, kort-/biljettkrav, tidsgräns, antal byten, UI-störningar. + skyltar, kort-/biljettkrav, tidsgräns, antal byten, UI-störningar, antal + våningar, egna kort, sittplatsönskemål. +- **Egna kort** (tillägg 2026-10-24): som svårighetsinställning har varje + person i sällskapet **sitt eget tågkort**. Alla måste ha pengar på kortet + för att komma igenom spärren – och på biljettbanor måste alla ha en + biljett. ## 10. Poäng diff --git a/internal/game/game.go b/internal/game/game.go index e1a826f..9686e1e 100644 --- a/internal/game/game.go +++ b/internal/game/game.go @@ -32,6 +32,7 @@ type Game struct { Assets *Assets Know *lang.Knowledge // spelarens japanska – följer med mellan banor (sparas i M8) Wallet *sim.Wallet // pengar, kort, telefon, biljett – följer med mellan banor + Profile *sim.Profile // aktiva debuffar – följer med mellan banor fixedSeed uint64 // >0: alla banor startar med denna seed (tester/skärmdumpar) scene Scene next Scene @@ -49,6 +50,7 @@ type Options struct { Points int // språkpoäng från start (för tester/skärmdumpar) Seed uint64 // >0: fast seed för banorna (för tester/skärmdumpar) Phone bool // kortet i telefonen från start + Debuffs []string // debuffar från start (för tester/skärmdumpar) CardYen int // >=0: kortets startsaldo (för tester/skärmdumpar), -1 = standard } @@ -65,6 +67,10 @@ func New(opt Options) (*Game, error) { g.Know.Points = opt.Points g.fixedSeed = opt.Seed g.Wallet = sim.NewWallet() + g.Profile = &sim.Profile{} + for _, d := range opt.Debuffs { + g.Profile.Add(sim.DebuffKind(d), 1) + } g.Wallet.Phone = opt.Phone if opt.CardYen >= 0 { g.Wallet.Card = opt.CardYen @@ -75,7 +81,7 @@ func New(opt Options) (*Game, error) { } } if opt.LevelID != "" { - s, err := NewLevelScene(a, opt.LevelID, g.Know, g.Wallet, g.seed()) + s, err := NewLevelScene(a, opt.LevelID, g, g.seed()) if err != nil { return nil, err } @@ -127,3 +133,12 @@ func (g *Game) seed() rng.Seed { } return rng.NewSeed() } + +// levelEnded appliceras exakt en gång när en bana avgjorts: banans nya +// debuffar läggs på profilen och alla räknas ned en bana. +func (g *Game) levelEnded(run *sim.Run) { + for _, d := range run.NewDebuffs { + g.Profile.Add(d.Kind, d.LevelsLeft) + } + g.Profile.EndLevel() +} diff --git a/internal/game/input.go b/internal/game/input.go index d8e0a45..cc6d325 100644 --- a/internal/game/input.go +++ b/internal/game/input.go @@ -81,19 +81,21 @@ func wordsJustPressed() bool { return virtual.pressed["l"] || inpututil.IsKeyJustPressed(ebiten.KeyL) || gamepadJustPressed(ebiten.StandardGamepadButtonLeftRight) } -// miniMove: -1/+1 vid just-tryck på pil/WASD (upp/vänster = -1, ner/höger = +1). -func miniMove() int { +// miniMoveXY: just-tryck på pil/WASD/d-pad som (x, y) i -1/0/+1. +func miniMoveXY() (x, y int) { switch { - case virtual.pressed["up"] || virtual.pressed["left"] || inpututil.IsKeyJustPressed(ebiten.KeyArrowUp) || inpututil.IsKeyJustPressed(ebiten.KeyArrowLeft) || - inpututil.IsKeyJustPressed(ebiten.KeyW) || inpututil.IsKeyJustPressed(ebiten.KeyA) || - gamepadJustPressed(ebiten.StandardGamepadButtonLeftTop) || gamepadJustPressed(ebiten.StandardGamepadButtonLeftLeft): - return -1 - case virtual.pressed["down"] || virtual.pressed["right"] || inpututil.IsKeyJustPressed(ebiten.KeyArrowDown) || inpututil.IsKeyJustPressed(ebiten.KeyArrowRight) || - inpututil.IsKeyJustPressed(ebiten.KeyS) || inpututil.IsKeyJustPressed(ebiten.KeyD) || - gamepadJustPressed(ebiten.StandardGamepadButtonLeftBottom) || gamepadJustPressed(ebiten.StandardGamepadButtonLeftRight): - return 1 + case virtual.pressed["left"] || inpututil.IsKeyJustPressed(ebiten.KeyArrowLeft) || inpututil.IsKeyJustPressed(ebiten.KeyA) || gamepadJustPressed(ebiten.StandardGamepadButtonLeftLeft): + x = -1 + case virtual.pressed["right"] || inpututil.IsKeyJustPressed(ebiten.KeyArrowRight) || inpututil.IsKeyJustPressed(ebiten.KeyD) || gamepadJustPressed(ebiten.StandardGamepadButtonLeftRight): + x = 1 } - return 0 + switch { + case virtual.pressed["up"] || inpututil.IsKeyJustPressed(ebiten.KeyArrowUp) || inpututil.IsKeyJustPressed(ebiten.KeyW) || gamepadJustPressed(ebiten.StandardGamepadButtonLeftTop): + y = -1 + case virtual.pressed["down"] || inpututil.IsKeyJustPressed(ebiten.KeyArrowDown) || inpututil.IsKeyJustPressed(ebiten.KeyS) || gamepadJustPressed(ebiten.StandardGamepadButtonLeftBottom): + y = 1 + } + return x, y } // confirmHeld: Enter/mellanslag eller A hålls nere (sedelinmatning). diff --git a/internal/game/minigame_view.go b/internal/game/minigame_view.go index 0bd536a..2b7ce8b 100644 --- a/internal/game/minigame_view.go +++ b/internal/game/minigame_view.go @@ -45,6 +45,21 @@ func (s *LevelScene) drawTopUp(a *Assets, screen *ebiten.Image, m *minigame.TopU a.Draw(screen, a.T("mini.topup.title"), x+60, y+2, colText) y += 20 switch m.Stage { + case minigame.TopUpPickMember: + a.Draw(screen, a.T("mini.topup.member"), x, y, colDim) + y += LineH + 4 + for i, name := range m.Members { + col := colText + if i == m.Cursor { + vector.DrawFilledRect(screen, float32(x-2), float32(y+i*LineH-1), 200, LineH, colBar, false) + col = colKnown + } + bal := s.run.Wallet.Card + if i > 0 { + bal = s.run.Party.Members[i].Card + } + a.Draw(screen, fmt.Sprintf("%-8s %5d¥", name, bal), x, y+i*LineH, col) + } case minigame.TopUpPickButton: a.Draw(screen, a.T("mini.topup.pick"), x, y, colDim) y += LineH + 4 @@ -85,6 +100,10 @@ func (s *LevelScene) drawTicket(a *Assets, screen *ebiten.Image, m *minigame.Tic a.DrawBig(screen, "きっぷ", x, y, colKnown) a.Draw(screen, a.T("mini.ticket.title"), x+48, y+2, colText) y += 20 + if m.Stage == minigame.TicketPickSeat { + s.drawSeats(a, screen, m, p, x, y) + return + } a.Draw(screen, fmt.Sprintf(a.T("mini.ticket.hint"), s.run.Level.Destination.Get("romaji"), m.Cash), x, y, colDim) y += LineH + 4 for i, o := range m.Options { @@ -154,3 +173,64 @@ func (s *LevelScene) drawRide(a *Assets, screen *ebiten.Image, m *minigame.Ride, } a.Draw(screen, hint, x, p.Max.Y-16, colGood) } + +// prefText beskriver ett önskemål. +func prefText(a *Assets, m *minigame.Ticket, p minigame.SeatPref) string { + switch p.Kind { + case minigame.PrefWindow: + return a.T("seat.window") + case minigame.PrefAisle: + return a.T("seat.aisle") + case minigame.PrefLeft: + return a.T("seat.left") + case minigame.PrefRight: + return a.T("seat.right") + default: + return fmt.Sprintf(a.T("seat.with"), m.Members[p.With]) + } +} + +// drawSeats ritar vagnen: tre rader, fönster V | gång | fönster H, och +// sällskapets önskemål till höger. +func (s *LevelScene) drawSeats(a *Assets, screen *ebiten.Image, m *minigame.Ticket, p image.Rectangle, x, y int) { + a.Draw(screen, fmt.Sprintf(a.T("mini.seat.hint"), m.Members[m.Current]), x, y, colDim) + y += LineH + 4 + const sw, sh, gap = 22, 18, 10 + a.Draw(screen, a.T("seat.front"), x+2, y-2, colDim) + y += 10 + for row := 0; row < minigame.SeatRows; row++ { + for col := 0; col < minigame.SeatCols; col++ { + sx := x + col*(sw+2) + if col >= 2 { + sx += gap + } + sy := y + row*(sh+3) + seat := minigame.Seat{Row: row, Col: col} + bg := colBar + if m.SeatTaken(seat) { + bg = color.RGBA{90, 105, 136, 255} + } + vector.DrawFilledRect(screen, float32(sx), float32(sy), sw, sh, bg, false) + if seat == m.Seat { + vector.DrawFilledRect(screen, float32(sx), float32(sy), sw, 2, colKnown, false) + vector.DrawFilledRect(screen, float32(sx), float32(sy+sh-2), sw, 2, colKnown, false) + } + for i, as := range m.Assigned { + if as == seat { + a.Draw(screen, string([]rune(m.Members[i])[:1]), sx+8, sy+3, colText) + } + } + } + } + // Önskemål. + px := x + 4*(sw+2) + gap + 14 + a.Draw(screen, a.T("mini.seat.prefs"), px, y-10, colDim) + for i, pr := range m.Prefs { + col := colText + if pr.Member == m.Current { + col = colKnown + } + a.Draw(screen, m.Members[pr.Member]+": "+prefText(a, m, pr), px, y+i*LineH, col) + } + a.Draw(screen, a.T("mini.cancel"), x, p.Max.Y-16, colDim) +} diff --git a/internal/game/scene_level.go b/internal/game/scene_level.go index 69c94eb..0e2b0cb 100644 --- a/internal/game/scene_level.go +++ b/internal/game/scene_level.go @@ -36,16 +36,16 @@ type LevelScene struct { hideMap bool // M döljer/visar minikartan } -// NewLevelScene laddar banan och ställer spelaren på startrutan. know är -// spelarens japanska, som delas mellan banor; seed styr omgångens slump. -func NewLevelScene(a *Assets, id string, know *lang.Knowledge, wallet *sim.Wallet, seed rng.Seed) (*LevelScene, error) { +// NewLevelScene laddar banan och ställer spelaren på startrutan. Kunskap, +// plånbok och debuffar tas från Game (delas mellan banor); seed styr slumpen. +func NewLevelScene(a *Assets, id string, g *Game, seed rng.Seed) (*LevelScene, error) { lvl, err := level.LoadFile(filepath.Join(a.LevelsDir, id+".json")) if err != nil { return nil, err } s := &LevelScene{ id: id, - run: sim.NewRun(lvl, sim.RunOptions{Dict: a.Dict, Know: know, Wallet: wallet, Seed: seed}), + run: sim.NewRun(lvl, sim.RunOptions{Dict: a.Dict, Know: g.Know, Wallet: g.Wallet, Debuffs: g.Profile.Debuffs, Seed: seed}), cam: sim.NewCamera(ScreenW, ScreenH, float64(lvl.Width()*TileSize), float64(lvl.Height()*TileSize)), } s.followPlayer() @@ -79,8 +79,10 @@ func (s *LevelScene) followPlayer() { func (s *LevelScene) Update(g *Game) error { if s.run.Mini != nil { // Minispel: all input går dit; Esc avbryter minispelet, inte banan. - s.run.StepMini(dt, minigame.Input{Move: miniMove(), Confirm: confirmJustPressed(), Hold: confirmHeld(), Cancel: backJustPressed()}) + mx, my := miniMoveXY() + s.run.StepMini(dt, minigame.Input{Move: my, MoveX: mx, Confirm: confirmJustPressed(), Hold: confirmHeld(), Cancel: backJustPressed()}) if s.run.Outcome != sim.Ongoing { + g.levelEnded(s.run) g.SetScene(NewResultScene(s)) } return nil @@ -107,11 +109,43 @@ func (s *LevelScene) Update(g *Game) error { } s.followPlayer() if s.run.Outcome != sim.Ongoing { + g.levelEnded(s.run) g.SetScene(NewResultScene(s)) } return nil } +// MiniPick flyttar markören i det pågående minispelet ett steg mot +// alternativet med texten text; true när det är valt (skriptläget). +func (s *LevelScene) MiniPick(text string) bool { + switch m := s.run.Mini.(type) { + case *minigame.Ticket: + if m.Stage == minigame.TicketPickDest { + if m.Options[m.Cursor].Dest == text { + return true + } + s.run.StepMini(0, minigame.Input{Move: 1}) + return false + } + case *minigame.TopUp: + switch m.Stage { + case minigame.TopUpPickMember: + if m.Members[m.Cursor] == text { + return true + } + s.run.StepMini(0, minigame.Input{Move: 1}) + return false + case minigame.TopUpPickButton: + if m.Buttons[m.Cursor] == text { + return true + } + s.run.StepMini(0, minigame.Input{MoveX: 1}) + return false + } + } + return true +} + // trainTile är rutan "bortom perrongkanten" där tågvagnen ritas: första // väggruta nedanför, till höger, till vänster eller ovanför perrongen. func (s *LevelScene) trainTile(p level.Point) level.Point { @@ -243,14 +277,26 @@ func (s *LevelScene) drawHUD(g *Game, screen *ebiten.Image) { a.Draw(screen, a.T("hud.destination")+": "+dest, destX, 0, colKnown) a.Draw(screen, fmt.Sprintf("%s Lv%d·%d", a.T("hud.japanese"), r.Know.Level(), r.Know.Count()), destX+a.Width(a.T("hud.destination")+": "+dest)+12, 0, colDim) - wallet := fmt.Sprintf("%s %3.0fs %s %d¥ %s %d¥", a.T("hud.time"), r.Time, a.T("hud.card"), r.Wallet.Card, a.T("hud.cash"), r.Wallet.Cash) + timeStr := fmt.Sprintf("%s %3.0fs", a.T("hud.time"), r.Time) + if r.Level.TimeLimitSec > 0 { + left := r.TimeLeft() + timeStr = fmt.Sprintf("%s %d:%02d", a.T("hud.time_left"), int(left)/60, int(left)%60) + } + wallet := fmt.Sprintf("%s %s %d¥ %s %d¥", timeStr, a.T("hud.card"), r.Wallet.Card, a.T("hud.cash_short"), r.Wallet.Cash) + if r.Level.MaxMissedTrains > 0 { + wallet += fmt.Sprintf(" %s %d/%d", a.T("hud.missed_short"), r.MissedTrains, r.Level.MaxMissedTrains) + } if r.Wallet.Phone { wallet += fmt.Sprintf(" %s %.0f%%", a.T("hud.phone"), r.Wallet.Battery) } if r.Wallet.Ticket != "" { wallet += " " + a.T("hud.ticket") + " " + r.Wallet.Ticket } - a.Draw(screen, wallet, 4, LineH, colDim) + walletCol := colDim + if r.Level.TimeLimitSec > 0 && r.TimeLeft() < 30 { + walletCol = colBad + } + a.Draw(screen, wallet, 4, LineH, walletCol) s.drawMeters(g, screen) if r.Outcome != sim.Ongoing || r.Mini != nil { @@ -278,6 +324,13 @@ func (s *LevelScene) drawHUD(g *Game, screen *ebiten.Image) { } lines = append(lines, a.wrapLine(plainLine(a.T(r.FlashKey), col), ScreenW-8)...) } + if debuffs := g.Profile.Debuffs; len(debuffs) > 0 && r.Time < 6 { + var parts []string + for _, d := range debuffs { + parts = append(parts, fmt.Sprintf("%s (%d)", a.T("debuff."+string(d.Kind)), d.LevelsLeft)) + } + lines = append(lines, a.wrapLine(plainLine(a.T("hud.debuffs")+": "+strings.Join(parts, ", "), colBad), ScreenW-8)...) + } // Inforutans läge: nederkant, men flyttas upp under HUD:en om spelaren // (eller tåget under hen) annars skulle hamna bakom den. @@ -390,10 +443,18 @@ func (s *LevelScene) infoLines(a *Assets) (lines []line, accent color.Color, bar if r.DeniedAt >= 0 && r.Time-r.DeniedAt < deniedShowSec { key := "hud.gate_denied" switch { - case lvl.TicketRequired: + case lvl.TicketRequired && r.Wallet.Ticket == "": key = sim.FlashNoTicket + case lvl.TicketRequired: + key = "hud.need_all_tickets" case r.Wallet.Phone && r.Wallet.Battery <= 0: key = "hud.phone_dead" + case len(r.MembersWithoutFare()) > 0: + var names []string + for _, m := range r.MembersWithoutFare() { + names = append(names, m.Name) + } + return []line{plainLine(fmt.Sprintf(a.T(sim.FlashNoCards), strings.Join(names, ", ")), colBad)}, colBad, false } return []line{plainLine(a.T(key), colBad)}, colBad, false } @@ -403,11 +464,11 @@ func (s *LevelScene) infoLines(a *Assets) (lines []line, accent color.Color, bar // drawMeters ritar sällskapets mat/dryck/toa-mätare uppe till höger. func (s *LevelScene) drawMeters(g *Game, screen *ebiten.Image) { members := s.run.Party.Members - const w, gap = 14, 4 + const w, gap = 11, 3 x0 := ScreenW - 4 - len(members)*(w+gap) for i, m := range members { x := float32(x0 + i*(w+gap)) - g.Assets.Draw(screen, string([]rune(m.Name)[:1]), int(x)+3, 0, colDim) + g.Assets.Draw(screen, string([]rune(m.Name)[:1]), int(x)+2, 0, colDim) for j, v := range []struct { val float64 col color.Color diff --git a/internal/game/scene_menu.go b/internal/game/scene_menu.go index 2ccc106..cd1ea64 100644 --- a/internal/game/scene_menu.go +++ b/internal/game/scene_menu.go @@ -64,7 +64,7 @@ func (m *MenuScene) Update(g *Game) error { if n := len(m.entries); n > 0 { m.sel = (m.sel + menuMove() + n) % n if confirmJustPressed() { - s, err := NewLevelScene(g.Assets, m.entries[m.sel].id, g.Know, g.Wallet, g.seed()) + s, err := NewLevelScene(g.Assets, m.entries[m.sel].id, g, g.seed()) if err != nil { m.err = err return nil @@ -100,6 +100,13 @@ func (m *MenuScene) Draw(g *Game, screen *ebiten.Image) { } a.Draw(screen, fmt.Sprintf("%s Lv%d %d %s %s %d %s %d¥ %s %d¥ %s", a.T("hud.japanese"), g.Know.Level(), g.Know.Count(), a.T("hud.words"), a.T("words.points"), g.Know.Points, a.T("hud.card"), g.Wallet.Card, a.T("hud.cash"), g.Wallet.Cash, fmt.Sprintf(a.T("menu.phone"), onoff)), 8, ScreenH-38, colDim) + if len(g.Profile.Debuffs) > 0 { + var parts []string + for _, d := range g.Profile.Debuffs { + parts = append(parts, fmt.Sprintf("%s (%d)", a.T("debuff."+string(d.Kind)), d.LevelsLeft)) + } + a.Draw(screen, a.T("hud.debuffs")+": "+strings.Join(parts, ", "), 8, ScreenH-50, colBad) + } a.Draw(screen, a.T("menu.hint"), 8, ScreenH-26, colDim) a.Draw(screen, fmt.Sprintf("%s (%s)", buildinfo.Version, buildinfo.Mode), 8, ScreenH-13, colDim) } diff --git a/internal/game/scene_result.go b/internal/game/scene_result.go index e170d92..09a3e9a 100644 --- a/internal/game/scene_result.go +++ b/internal/game/scene_result.go @@ -23,7 +23,7 @@ func (r *ResultScene) Update(g *Game) error { case wordsJustPressed(): g.SetScene(NewWordsScene(g.Assets, r)) case inpututil_R(): - s, err := NewLevelScene(g.Assets, r.from.id, g.Know, g.Wallet, g.seed()) + s, err := NewLevelScene(g.Assets, r.from.id, g, g.seed()) if err != nil { return err } @@ -42,26 +42,28 @@ func (r *ResultScene) Draw(g *Game, screen *ebiten.Image) { r.from.Draw(g, screen) // banan i bakgrunden run := r.from.run a := g.Assets - vector.DrawFilledRect(screen, 20, 36, ScreenW-40, 120, colPanel, false) + vector.DrawFilledRect(screen, 20, 30, ScreenW-40, 138, colPanel, false) accent, headline := colBad, a.T("level.lost") if run.Outcome == sim.Won { accent, headline = colGood, a.T("level.cleared") } - vector.DrawFilledRect(screen, 20, 36, ScreenW-40, 3, accent, false) - a.DrawBig(screen, headline, 28, 44, accent) + vector.DrawFilledRect(screen, 20, 30, ScreenW-40, 3, accent, false) + a.DrawBig(screen, headline, 28, 36, accent) if run.Outcome == sim.Won { stars := strings.Repeat("★", run.Stars) + strings.Repeat("☆", 3-run.Stars) - a.DrawBig(screen, stars, ScreenW-28-a.Width(stars)-8, 44, colWarn) + a.DrawBig(screen, stars, ScreenW-28-a.Width(stars)-8, 36, colWarn) } - y := 62 + y := 54 + if run.Boarded == nil && run.Outcome == sim.Lost { + a.Draw(screen, a.T(run.LostReason), 28, y, colText) + y += LineH + } if tr := run.Boarded; tr != nil { a.Draw(screen, fmt.Sprintf("%s%s %s %s%s", tr.Track, a.T("hud.track_suffix_ja"), tr.Line.Get("ja"), tr.Destination.Get("ja"), a.T("hud.for_ja")), 28, y, colKnown) y += LineH - a.Draw(screen, fmt.Sprintf("%s %s %s → %s", a.T("hud.track"), tr.Track, tr.Line.Get("romaji"), tr.Destination.Get("romaji")), 28, y, colDim) - y += LineH if run.Outcome == sim.Lost { reason := a.T(run.LostReason) if run.LostReason == sim.LostWrongTrain { @@ -77,18 +79,32 @@ func (r *ResultScene) Draw(g *Game, screen *ebiten.Image) { a.Draw(screen, fmt.Sprintf("%s %.1fs (%s %.0fs) %s %d %s %.0f %%", a.T("hud.time"), run.Time, a.T("result.par"), run.ParSec(), a.T("hud.steps"), run.Steps, a.T("result.explored"), 100*run.Fog.Explored(run.Level)), 28, y, colText) y += LineH - a.Draw(screen, fmt.Sprintf("%s %d %s %d¥ %s %d¥ %s %d %s %d", a.T("result.gates"), run.GatePasses, a.T("result.card"), run.Wallet.Card, - a.T("result.spent"), run.Wallet.Spent, a.T("result.missed"), run.MissedTrains, a.T("result.served"), run.Served), 28, y, colText) + a.Draw(screen, fmt.Sprintf("%s %d %s %d¥ %s %d¥ %s %d", a.T("result.gates"), run.GatePasses, a.T("hud.card"), run.Wallet.Card, + a.T("result.spent"), run.Wallet.Spent, a.T("result.missed_short"), run.MissedTrains), 28, y, colText) y += LineH if run.Outcome == sim.Won { - msg := fmt.Sprintf("+%d %s", run.PointsEarned, a.T("words.points")) + sc := run.Score + a.Draw(screen, fmt.Sprintf("%s %d", a.T("result.score"), sc.Total), 28, y, colText) + y += LineH + a.Draw(screen, fmt.Sprintf("%s %d %s %d %s %d %s %d %s %d", strings.ToLower(a.T("hud.time")), sc.Time, a.T("result.money"), sc.Money, + a.T("result.meters"), sc.Meters, a.T("result.map"), sc.Explore, a.T("result.penalty"), sc.Penalty), 28, y, colDim) + y += LineH + msg := fmt.Sprintf("+%d %s", run.PointsEarned, a.T("result.lang_points")) if len(run.LearnedDest) > 0 { msg += " " + a.T("hud.learned") + ": " + strings.Join(run.LearnedDest, " ") + " (" + a.T("result.destination") + ")" } a.Draw(screen, msg, 28, y, colKnown) y += LineH } + if len(run.NewDebuffs) > 0 { + var parts []string + for _, d := range run.NewDebuffs { + parts = append(parts, fmt.Sprintf("%s (%d)", a.T("debuff."+string(d.Kind)), d.LevelsLeft)) + } + a.Draw(screen, a.T("result.new_debuffs")+": "+strings.Join(parts, ", "), 28, y, colBad) + y += LineH + } a.Draw(screen, fmt.Sprintf("%s Lv%d %d %s %s %d (%d %s)", a.T("hud.japanese"), run.Know.Level(), run.Know.Count(), a.T("hud.words"), a.T("words.points"), run.Know.Points, run.Know.Helps, a.T("result.helps")), 28, y, colDim) - a.Draw(screen, a.T("result.hint"), 28, 141, colDim) + a.Draw(screen, a.T("result.hint"), 28, 155, colDim) } diff --git a/internal/game/script.go b/internal/game/script.go index 864b551..832d413 100644 --- a/internal/game/script.go +++ b/internal/game/script.go @@ -22,6 +22,7 @@ import ( // hold N håll Enter nere N bildrutor (sedelinmatning) // waittrain vänta tills tåget vid perrongen spelaren står på är inne // waitstop vänta tills tågresan står vid resmålet +// pick TEXT flytta markören i minispelet tills alternativet TEXT är valt // press KEY tryck enter | esc | r | h | l | up | down en bildruta // move DIR N gå N rutor åt up | down | left | right (stannar exakt där) // shot PATH spara aktuell bild som PNG (intern upplösning × shotScale) @@ -86,9 +87,9 @@ func parseScript(src string) (*script, error) { return nil, fmt.Errorf("script: okänd riktning %q", f[1]) } st.n, _ = strconv.Atoi(f[2]) - case "shot": + case "shot", "pick": if len(f) != 2 { - return nil, fmt.Errorf("script: 'shot PATH'") + return nil, fmt.Errorf("script: '%s TEXT'", f[0]) } st.arg = f[1] case "quit", "waittrain", "waitstop": @@ -124,6 +125,7 @@ type playerTiler interface { type trainWaiter interface { TrainHere() bool RideAtDest() bool + MiniPick(text string) bool } // tick körs i början av varje Update. frame är senast ritade bild. @@ -191,6 +193,11 @@ func (s *script) tick(g *Game, frame *ebiten.Image) error { if tw, ok := g.scene.(trainWaiter); !ok || tw.RideAtDest() { s.advance() } + case "pick": + s.counter++ + if tw, ok := g.scene.(trainWaiter); !ok || tw.MiniPick(st.arg) || s.counter > 60 { + s.advance() + } case "shot": if err := saveShot(frame, st.arg); err != nil { return err diff --git a/internal/level/level.go b/internal/level/level.go index 40bd318..f062110 100644 --- a/internal/level/level.go +++ b/internal/level/level.go @@ -108,19 +108,22 @@ type SignText struct { // Level är en bana. type Level struct { - ID string `json:"id"` - Name Text `json:"name"` - Difficulty int `json:"difficulty"` // 1 (lätt) … 5 (svår) - Destination Text `json:"destination"` // dit spelaren ska - TimeLimitSec int `json:"timeLimitSec"` // 0 = ingen tidsgräns - ParSec int `json:"parSec"` // "bra tid" för tre stjärnor (0 = räknas ut från kortaste vägen) - Party int `json:"party"` // antal i sällskapet inkl. spelaren (0 = 1) - TicketRequired bool `json:"ticketRequired"` // spärren kräver pappersbiljett (köps i automaten) i stället för kort - RideStops int `json:"rideStops"` // antal stationer på tågresan (0 = DefaultRideStops) - FareYen int `json:"fareYen"` // vad spärren drar från kortet (0 = standard) - Grid []string `json:"grid"` - Trains []Train `json:"trains"` - Signs []SignText `json:"signs"` + ID string `json:"id"` + Name Text `json:"name"` + Difficulty int `json:"difficulty"` // 1 (lätt) … 5 (svår) + Destination Text `json:"destination"` // dit spelaren ska + TimeLimitSec int `json:"timeLimitSec"` // 0 = ingen tidsgräns + ParSec int `json:"parSec"` // "bra tid" för tre stjärnor (0 = räknas ut från kortaste vägen) + Party int `json:"party"` // antal i sällskapet inkl. spelaren (0 = 1) + TicketRequired bool `json:"ticketRequired"` // spärren kräver pappersbiljett (köps i automaten) i stället för kort + RideStops int `json:"rideStops"` // antal stationer på tågresan (0 = DefaultRideStops) + MaxMissedTrains int `json:"maxMissedTrains"` // >0: fler missade tåg än så förlorar banan + IndividualCards bool `json:"individualCards"` // alla i sällskapet har egna kort (och biljetter) som spärren kräver + SeatSelection bool `json:"seatSelection"` // biljettköpet fortsätter med sittplatsval efter sällskapets önskemål + FareYen int `json:"fareYen"` // vad spärren drar från kortet (0 = standard) + Grid []string `json:"grid"` + Trains []Train `json:"trains"` + Signs []SignText `json:"signs"` } // Point är en rutkoordinat. @@ -253,6 +256,12 @@ func (l *Level) Validate() error { if l.TicketRequired && len(l.Find(TicketMachine)) == 0 { return fmt.Errorf("level %s: biljettkrav utan biljettautomat (T)", l.ID) } + if l.SeatSelection && !l.TicketRequired { + return fmt.Errorf("level %s: sittplatsval kräver biljettbana", l.ID) + } + if l.MaxMissedTrains < 0 || l.TimeLimitSec < 0 { + return fmt.Errorf("level %s: negativ tidsgräns/maxantal missade tåg", l.ID) + } if l.Party > MaxParty { return fmt.Errorf("level %s: sällskapet får vara högst %d", l.ID, MaxParty) } diff --git a/internal/level/level_test.go b/internal/level/level_test.go index 50a63fd..398c5d6 100644 --- a/internal/level/level_test.go +++ b/internal/level/level_test.go @@ -306,3 +306,18 @@ func TestTicketAndRideFields(t *testing.T) { t.Fatal("fälten ska läsas") } } + +func TestDifficultySettings(t *testing.T) { + if _, err := Parse([]byte(strings.Replace(sample, `"difficulty": 1`, `"difficulty": 1, "seatSelection": true`, 1))); err == nil { + t.Fatal("sittplatsval utan biljettbana ska ge fel") + } + if _, err := Parse([]byte(strings.Replace(sample, `"difficulty": 1`, `"difficulty": 1, "maxMissedTrains": -1`, 1))); err == nil { + t.Fatal("negativt maxantal ska ge fel") + } + src := strings.Replace(strings.Replace(sample, `"#S..#P#"`, `"#ST.#P#"`, 1), `"difficulty": 1`, + `"difficulty": 3, "ticketRequired": true, "seatSelection": true, "individualCards": true, "maxMissedTrains": 2, "timeLimitSec": 300`, 1) + l := mustParse(t, src) + if !l.SeatSelection || !l.IndividualCards || l.MaxMissedTrains != 2 || l.TimeLimitSec != 300 { + t.Fatal("inställningarna ska läsas") + } +} diff --git a/internal/minigame/minigame.go b/internal/minigame/minigame.go index a8d5ca5..2d65b44 100644 --- a/internal/minigame/minigame.go +++ b/internal/minigame/minigame.go @@ -12,7 +12,8 @@ import "gitea.brasse-pc.eu/brasse/metro-puzzle-jp/internal/rng" // Input är vad spelaren gjorde den här bildrutan. type Input struct { - Move int // -1 / +1 (upp/vänster resp. ner/höger), 0 = inget + Move int // -1 / +1 (upp resp. ner), 0 = inget + MoveX int // -1 / +1 (vänster resp. höger), 0 = inget Confirm bool // Enter tryckt (just nu) Hold bool // Enter hålls nere Cancel bool // Esc tryckt diff --git a/internal/minigame/minigame_test.go b/internal/minigame/minigame_test.go index 5cc41fe..e167d5c 100644 --- a/internal/minigame/minigame_test.go +++ b/internal/minigame/minigame_test.go @@ -11,13 +11,13 @@ import ( const frame = 1.0 / 60 func TestTopUpFlowAndDeterminism(t *testing.T) { - g := NewTopUp(rng.FromInt(1), 5000) - h := NewTopUp(rng.FromInt(1), 5000) + g := NewTopUp(rng.FromInt(1), 5000, nil) + h := NewTopUp(rng.FromInt(1), 5000, nil) if strings.Join(g.Buttons, ",") != strings.Join(h.Buttons, ",") { t.Fatal("samma seed ska ge samma knappordning") } - if strings.Join(g.Buttons, ",") == strings.Join(NewTopUp(rng.FromInt(2), 5000).Buttons, ",") && - strings.Join(g.Buttons, ",") == strings.Join(NewTopUp(rng.FromInt(3), 5000).Buttons, ",") { + if strings.Join(g.Buttons, ",") == strings.Join(NewTopUp(rng.FromInt(2), 5000, nil).Buttons, ",") && + strings.Join(g.Buttons, ",") == strings.Join(NewTopUp(rng.FromInt(3), 5000, nil).Buttons, ",") { t.Fatal("olika seeds ska (nästan alltid) ge olika ordning") } // Fel knapp: straff och frysning. @@ -37,7 +37,7 @@ func TestTopUpFlowAndDeterminism(t *testing.T) { } // Rätt knapp -> belopp -> mata sedlar. for g.Buttons[g.Cursor] != "チャージ" { - g.Update(Input{Move: 1}, frame) + g.Update(Input{MoveX: 1}, frame) } g.Update(Input{Confirm: true}, frame) if g.Stage != TopUpPickAmount { @@ -65,14 +65,14 @@ func TestTopUpFlowAndDeterminism(t *testing.T) { t.Fatalf("done=%v success=%v amount=%d", g.Done(), g.Success(), g.Amount) } // Kontanter begränsar beloppen; utan pengar är spelet över direkt. - if a := NewTopUp(rng.FromInt(1), 2500).Amounts; len(a) != 2 || a[1] != 2000 { + if a := NewTopUp(rng.FromInt(1), 2500, nil).Amounts; len(a) != 2 || a[1] != 2000 { t.Fatalf("amounts med 2500 kr: %v", a) } - if !NewTopUp(rng.FromInt(1), 500).Done() { + if !NewTopUp(rng.FromInt(1), 500, nil).Done() { t.Fatal("utan råd ska automaten vara klar direkt") } // Esc avbryter utan köp. - c := NewTopUp(rng.FromInt(1), 5000) + c := NewTopUp(rng.FromInt(1), 5000, nil) c.Update(Input{Cancel: true}, frame) if !c.Done() || c.Success() { t.Fatal("avbrutet = klart utan framgång") @@ -80,8 +80,8 @@ func TestTopUpFlowAndDeterminism(t *testing.T) { } func TestTicketBoardSeededAndAffordable(t *testing.T) { - g := NewTicket(rng.FromInt(4), "渋谷", []string{"東京", "上野", "新宿"}, 5000) - h := NewTicket(rng.FromInt(4), "渋谷", []string{"東京", "上野", "新宿"}, 5000) + g := NewTicket(rng.FromInt(4), "渋谷", []string{"東京", "上野", "新宿"}, 5000, nil) + h := NewTicket(rng.FromInt(4), "渋谷", []string{"東京", "上野", "新宿"}, 5000, nil) if len(g.Options) != 4 { t.Fatalf("%d alternativ", len(g.Options)) } @@ -102,7 +102,7 @@ func TestTicketBoardSeededAndAffordable(t *testing.T) { t.Fatalf("köp: %+v", g.Chosen) } // Utan råd går det inte att köpa. - p := NewTicket(rng.FromInt(4), "渋谷", []string{"東京"}, 100) + p := NewTicket(rng.FromInt(4), "渋谷", []string{"東京"}, 100, nil) p.Update(Input{Confirm: true}, frame) if p.Done() { t.Fatal("utan råd ska köpet inte gå igenom") @@ -204,3 +204,92 @@ func TestRideWithoutFillersStillHasDestination(t *testing.T) { t.Fatalf("stops=%v dest=%d", g.Stops, g.Dest) } } + +func TestTopUpPicksMemberWithIndividualCards(t *testing.T) { + g := NewTopUp(rng.FromInt(1), 5000, []string{"Du", "Anna", "Ville"}) + if g.Stage != TopUpPickMember { + t.Fatal("med egna kort väljs person först") + } + g.Update(Input{Move: 1}, frame) + g.Update(Input{Confirm: true}, frame) + if g.Member != 1 || g.Stage != TopUpPickButton || g.Cursor != 0 { + t.Fatalf("member=%d stage=%v", g.Member, g.Stage) + } + // 2×2-rutnätet: höger = +1, ner = +2. + g.Update(Input{MoveX: 1}, frame) + g.Update(Input{Move: 1}, frame) + if g.Cursor != 3 { + t.Fatalf("cursor=%d", g.Cursor) + } + if NewTopUp(rng.FromInt(1), 5000, []string{"Du"}).Stage != TopUpPickButton { + t.Fatal("ensam = inget personval") + } +} + +func TestSeatSelectionPreferences(t *testing.T) { + members := []string{"Du", "Anna", "Ville", "Sara"} + g := NewTicket(rng.FromInt(9), "渋谷", []string{"東京", "上野"}, 5000, members) + h := NewTicket(rng.FromInt(9), "渋谷", []string{"東京", "上野"}, 5000, members) + if len(g.Prefs) != 3 || len(g.Assigned) != 4 { + t.Fatalf("prefs=%d assigned=%d", len(g.Prefs), len(g.Assigned)) + } + for i := range g.Prefs { + if g.Prefs[i] != h.Prefs[i] { + t.Fatal("önskemålen ska vara seedade") + } + if g.Prefs[i].Kind == PrefWith && g.Prefs[i].With == g.Prefs[i].Member { + t.Fatal("ingen vill sitta bredvid sig själv") + } + } + // Köp resmålet -> sittplatssteget. + for g.Options[g.Cursor].Dest != "渋谷" { + g.Update(Input{Move: 1}, frame) + } + g.Update(Input{Confirm: true}, frame) + if g.Done() || g.Stage != TicketPickSeat || g.Chosen == nil { + t.Fatal("efter resmålet kommer sittplatserna") + } + // Placera alla på rad 0: plats 0,1,2,3 i ordning; upptagen plats går inte. + g.Update(Input{Confirm: true}, frame) // Du på (0,0) + g.Update(Input{Confirm: true}, frame) // upptagen: ignoreras + if g.Current != 1 { + t.Fatal("upptagen plats ska inte gå att välja") + } + for i := 1; i < 4; i++ { + g.Update(Input{MoveX: 1}, frame) + g.Update(Input{Confirm: true}, frame) + } + if !g.Done() || !g.Success() { + t.Fatal("alla placerade = köpet klart") + } + // Facit: räkna ut vilka som borde vara missnöjda med placeringen rad 0 / plats i. + var want []int + for _, p := range g.Prefs { + if !p.Satisfied(g.Assigned) { + want = append(want, p.Member) + } + } + if len(g.Unhappy) != len(want) { + t.Fatalf("unhappy=%v want=%v (prefs %+v)", g.Unhappy, want, g.Prefs) + } + // Egenskaperna. + if !(Seat{0, 0}).Window() || !(Seat{0, 3}).Window() || (Seat{0, 1}).Window() || !(Seat{0, 1}).Aisle() { + t.Fatal("fönster/gång") + } + if !(Seat{0, 0}).Left() || !(Seat{0, 2}).Right() || !(Seat{1, 0}).Beside(Seat{1, 1}) || (Seat{1, 1}).Beside(Seat{1, 2}) || (Seat{0, 0}).Beside(Seat{1, 0}) { + t.Fatal("sida/bredvid") + } + if (SeatPref{Member: 1, Kind: PrefWindow}).Satisfied([]Seat{{0, 0}, {-1, 0}}) { + t.Fatal("oplacerad = inte nöjd") + } + // Esc under sittplatsvalet avbryter köpet. + c := NewTicket(rng.FromInt(9), "渋谷", []string{"東京"}, 5000, members) + for c.Options[c.Cursor].Dest != "渋谷" { + c.Update(Input{Move: 1}, frame) + } + c.Update(Input{Confirm: true}, frame) + c.Update(Input{Cancel: true}, frame) + if !c.Done() || c.Success() { + t.Fatal("avbrutet sittplatsval = inget köp") + } +} diff --git a/internal/minigame/ticket.go b/internal/minigame/ticket.go index 39e1e91..801e39c 100644 --- a/internal/minigame/ticket.go +++ b/internal/minigame/ticket.go @@ -4,13 +4,91 @@ import "gitea.brasse-pc.eu/brasse/metro-puzzle-jp/internal/rng" // Ticket är biljettautomaten: en taxetavla med resmål (på japanska) i seedad // ordning. Spelaren väljer ett resmål och betalar – om det var rätt avgör -// spärren/tåget senare. +// tåget senare. Med sittplatsval följer ett steg där sällskapet placeras i +// vagnen efter sina seedade önskemål. type Ticket struct { base Options []TicketOption Cursor int Chosen *TicketOption Cash int + + // Sittplatser (nil Members = inget sittplatssteg). + Stage TicketStage + Members []string + Prefs []SeatPref // önskemål för medlemmar 1..n-1 + Assigned []Seat // vald plats per medlem, Row -1 = ingen än + Current int // medlemmen som placeras just nu + Seat Seat // markören i vagnen + Unhappy []int // medlemmar vars önskemål inte uppfylldes (efter köpet) +} + +// TicketStage är var i köpet man är. +type TicketStage int + +// Steg. +const ( + TicketPickDest TicketStage = iota + TicketPickSeat +) + +// Vagnen: SeatRows rader med fyra platser – fönster V, gång V | gång H, fönster H. +const ( + SeatRows = 3 + SeatCols = 4 +) + +// Seat är en plats i vagnen. +type Seat struct{ Row, Col int } + +// Window/Aisle/Left/Right-egenskaper för en plats. +func (s Seat) Window() bool { return s.Col == 0 || s.Col == 3 } +func (s Seat) Aisle() bool { return s.Col == 1 || s.Col == 2 } +func (s Seat) Left() bool { return s.Col <= 1 } +func (s Seat) Right() bool { return s.Col >= 2 } + +// Beside: samma rad och samma platspar (0–1 eller 2–3), inte över gången. +func (s Seat) Beside(o Seat) bool { return s.Row == o.Row && s.Col/2 == o.Col/2 && s.Col != o.Col } + +// PrefKind är ett slags önskemål. +type PrefKind int + +// Önskemål. +const ( + PrefWindow PrefKind = iota + PrefAisle + PrefLeft + PrefRight + PrefWith // bredvid en viss person +) + +// SeatPref är en medlems önskemål. +type SeatPref struct { + Member int + Kind PrefKind + With int // medlemsindex vid PrefWith +} + +// Satisfied kontrollerar önskemålet mot de valda platserna. +func (p SeatPref) Satisfied(assigned []Seat) bool { + s := assigned[p.Member] + if s.Row < 0 { + return false + } + switch p.Kind { + case PrefWindow: + return s.Window() + case PrefAisle: + return s.Aisle() + case PrefLeft: + return s.Left() + case PrefRight: + return s.Right() + case PrefWith: + o := assigned[p.With] + return o.Row >= 0 && s.Beside(o) + } + return true } // TicketOption är ett resmål på tavlan. @@ -20,8 +98,9 @@ type TicketOption struct { } // NewTicket bygger tavlan: rätt resmål + lockande alternativ, blandade. -// Taxan är seedad per resmål (140–620 yen i steg om 10). -func NewTicket(seed rng.Seed, correct string, others []string, cash int) *Ticket { +// Taxan är seedad per resmål (140–620 yen i steg om 10). members (≥2) +// aktiverar sittplatsvalet med seedade önskemål för alla utom spelaren. +func NewTicket(seed rng.Seed, correct string, others []string, cash int, members []string) *Ticket { r := newRand(seed, "ticket") g := &Ticket{Cash: cash} names := append([]string{correct}, others...) @@ -29,25 +108,74 @@ func NewTicket(seed rng.Seed, correct string, others []string, cash int) *Ticket g.Options = append(g.Options, TicketOption{Dest: n, Fare: 140 + 10*r.intn(49)}) } r.shuffle(len(g.Options), func(i, j int) { g.Options[i], g.Options[j] = g.Options[j], g.Options[i] }) + if len(members) >= 2 && len(members) <= SeatRows*SeatCols { + g.Members = append([]string(nil), members...) + for i := 1; i < len(members); i++ { + p := SeatPref{Member: i, Kind: PrefKind(r.intn(5))} + if p.Kind == PrefWith { + p.With = r.intn(len(members) - 1) + if p.With >= i { + p.With++ // aldrig sig själv + } + } + g.Prefs = append(g.Prefs, p) + } + g.Assigned = make([]Seat, len(members)) + for i := range g.Assigned { + g.Assigned[i] = Seat{Row: -1} + } + } return g } -// Update flyttar markören och köper. +// SeatTaken rapporterar om platsen redan är vald. +func (g *Ticket) SeatTaken(s Seat) bool { + for _, a := range g.Assigned { + if a == s { + return true + } + } + return false +} + +// Update flyttar markören, köper och placerar sällskapet. func (g *Ticket) Update(in Input, dt float64) { if g.done { return } if in.Cancel { - g.done = true + g.done = true // avbrutet: inget köp return } - g.Cursor = wrap(g.Cursor+in.Move, len(g.Options)) - if in.Confirm { - opt := g.Options[g.Cursor] - if opt.Fare > g.Cash { - return // har inte råd: välj annat eller avbryt + switch g.Stage { + case TicketPickDest: + g.Cursor = wrap(g.Cursor+in.Move, len(g.Options)) + if in.Confirm { + opt := g.Options[g.Cursor] + if opt.Fare > g.Cash { + return // har inte råd: välj annat eller avbryt + } + g.Chosen = &opt + if g.Members == nil { + g.done, g.success = true, true + return + } + g.Stage = TicketPickSeat + } + case TicketPickSeat: + g.Seat.Row = wrap(g.Seat.Row+in.Move, SeatRows) + g.Seat.Col = wrap(g.Seat.Col+in.MoveX, SeatCols) + if in.Confirm && !g.SeatTaken(g.Seat) { + g.Assigned[g.Current] = g.Seat + g.Current++ + if g.Current >= len(g.Members) { + for _, p := range g.Prefs { + if !p.Satisfied(g.Assigned) { + g.Unhappy = append(g.Unhappy, p.Member) + } + } + g.done, g.success = true, true + } } - g.Chosen = &opt - g.done, g.success = true, true } } diff --git a/internal/minigame/topup.go b/internal/minigame/topup.go index 1d8943e..92ad532 100644 --- a/internal/minigame/topup.go +++ b/internal/minigame/topup.go @@ -2,11 +2,13 @@ package minigame import "gitea.brasse-pc.eu/brasse/metro-puzzle-jp/internal/rng" -// TopUp är påfyllningsautomaten: hitta チャージ-knappen bland japanska -// knappar i seedad ordning, välj belopp, mata in sedlar genom att hålla -// Enter. Fel knapp kostar en straffsekund eller två. +// TopUp är påfyllningsautomaten: (vems kort, om alla har egna), hitta +// チャージ-knappen bland japanska knappar i seedad ordning, välj belopp, mata +// in sedlar genom att hålla Enter. Fel knapp kostar en straffsekund eller två. type TopUp struct { base + Members []string // namn när alla har egna kort (annars tom) + Member int // vald person (index i Members, 0 = spelaren) Stage TopUpStage Buttons []string // knapparnas text, seedad ordning Cursor int @@ -26,6 +28,7 @@ const ( TopUpPickButton TopUpStage = iota TopUpPickAmount TopUpFeed + TopUpPickMember // först, bara med egna kort ) // Knapparna på en japansk biljettautomat. チャージ är den rätta. @@ -40,10 +43,15 @@ const ( topUpDrainPerSec = 1.2 ) -// NewTopUp skapar automaten. maxCash begränsar beloppen. -func NewTopUp(seed rng.Seed, maxCash int) *TopUp { +// NewTopUp skapar automaten. maxCash begränsar beloppen. members anges +// när alla i sällskapet har egna kort; då väljs person först. +func NewTopUp(seed rng.Seed, maxCash int, members []string) *TopUp { r := newRand(seed, "topup") g := &TopUp{Buttons: append([]string(nil), topUpButtons...), MaxCash: maxCash} + if len(members) > 1 { + g.Members = append([]string(nil), members...) + g.Stage = TopUpPickMember + } r.shuffle(len(g.Buttons), func(i, j int) { g.Buttons[i], g.Buttons[j] = g.Buttons[j], g.Buttons[i] }) for _, a := range TopUpAmounts { if a <= maxCash { @@ -70,8 +78,14 @@ func (g *TopUp) Update(in Input, dt float64) { return } switch g.Stage { + case TopUpPickMember: + g.Cursor = wrap(g.Cursor+in.Move, len(g.Members)) + if in.Confirm { + g.Member = g.Cursor + g.Stage, g.Cursor = TopUpPickButton, 0 + } case TopUpPickButton: - g.Cursor = wrap(g.Cursor+in.Move, len(g.Buttons)) + g.Cursor = wrap(g.Cursor+2*in.Move+in.MoveX, len(g.Buttons)) // 2×2-rutnät if in.Confirm { if g.Buttons[g.Cursor] == topUpButtons[0] { g.Stage, g.Cursor = TopUpPickAmount, 0 diff --git a/internal/sim/party.go b/internal/sim/party.go index 282deff..11eb96b 100644 --- a/internal/sim/party.go +++ b/internal/sim/party.go @@ -48,8 +48,16 @@ type Member struct { Meters Meters Urge Urge UrgeAt float64 // när behovet uppstod + Card int // eget tågkort (yen) när banan kräver egna kort; spelaren använder plånboken } +// MemberCardYen är vad följarnas egna kort har från start (lite – de får +// fyllas på). +const MemberCardYen = 500 + +// Rates skalar hur fort mätarna sjunker (debuffar/stats). +type Rates struct{ Thirst, Toilet float64 } + // PartyNames är namnen i den ordning de följer med. var PartyNames = []string{"Du", "Anna", "Ville", "Sara", "Omar"} @@ -72,6 +80,7 @@ const ( // Party är sällskapet – lämmeltåget – med mätare, behov och följarnas spår. type Party struct { Members []*Member + Rates Rates trail []level.Point // ledarens rutor, senaste sist rand *rand.Rand nextEventAt float64 @@ -83,9 +92,9 @@ type Party struct { // sällskapet kommer från seed. func NewParty(n int, start level.Point, seed rng.Seed) *Party { n = max(1, min(n, len(PartyNames))) - p := &Party{rand: seed.New()} + p := &Party{rand: seed.New(), Rates: Rates{1, 1}} for i := 0; i < n; i++ { - p.Members = append(p.Members, &Member{Name: PartyNames[i], Meters: Meters{100, 100, 100}}) + p.Members = append(p.Members, &Member{Name: PartyNames[i], Meters: Meters{100, 100, 100}, Card: MemberCardYen}) } p.trail = []level.Point{start} p.nextEventAt = p.interval() * (0.5 + p.rand.Float64()) @@ -106,8 +115,8 @@ func (p *Party) interval() float64 { return BaseEventSec / float64(p.Size()) } func (p *Party) Advance(dt, t float64) { for _, m := range p.Members { m.Meters.Food = max(0, m.Meters.Food-FoodPerSec*dt) - m.Meters.Drink = max(0, m.Meters.Drink-DrinkPerSec*dt) - m.Meters.Toilet = max(0, m.Meters.Toilet-ToiletPerSec*dt) + m.Meters.Drink = max(0, m.Meters.Drink-DrinkPerSec*p.Rates.Thirst*dt) + m.Meters.Toilet = max(0, m.Meters.Toilet-ToiletPerSec*p.Rates.Toilet*dt) if m.Urge == Distracted && t-m.UrgeAt >= DistractionSec { m.Urge = NoUrge } @@ -185,6 +194,24 @@ func (p *Party) SpeedFactor() float64 { return f } +// Names är medlemmarnas namn i ordning. +func (p *Party) Names() []string { + out := make([]string, len(p.Members)) + for i, m := range p.Members { + out[i] = m.Name + } + return out +} + +// AvgMeters är medelvärdet av allas lägsta mätare, 0..1 (poängen). +func (p *Party) AvgMeters() float64 { + sum := 0.0 + for _, m := range p.Members { + sum += m.Meters.Min() + } + return sum / float64(len(p.Members)) / 100 +} + // NeedsToilet är de som har nytta av en toalett just nu. func (p *Party) NeedsToilet() []*Member { var out []*Member diff --git a/internal/sim/run.go b/internal/sim/run.go index fd7b52d..1829ce9 100644 --- a/internal/sim/run.go +++ b/internal/sim/run.go @@ -76,8 +76,46 @@ type Run struct { LostReason string // varför banan förlorades (nyckel för UI) FlashKey string // kort meddelande till HUD (textnyckel) FlashAt float64 // < 0 = aldrig + + // Svårighet, poäng och debuffar (M7). + Stats Stats // multiplikatorer från profilens debuffar + Grumpy int // missnöjda med sittplatsen + poisoned bool // otur vid kiosken: matförgiftning efter banan + spentStart int // plånbokens Spent vid banstart + Score ScoreBreakdown + NewDebuffs []Debuff // debuffar banan gav (appliceras på profilen efteråt) } +// ScoreBreakdown är poängen för en vunnen bana. +type ScoreBreakdown struct { + Time, Money, Meters, Explore, Penalty, Total int +} + +// Poängformelns vikter. +const ( + ScoreTimeMax = 500 // par eller snabbare + ScoreMoneyMax = 300 // minus 1 per 10 yen spenderade på banan + ScoreMetersMax = 200 // sällskapets mätare vid målgång + ScoreExploreMax = 100 // utforskad andel + PenaltyMissed = 50 + PenaltyRescan = 10 + PenaltyGrumpy = 30 + GrumpyFoodPenalty = 25.0 +) + +// Fler förlustorsaker. +const ( + LostTimeUp = "result.lost_time_up" + LostMissedTrains = "result.lost_missed_trains" +) + +// Fler flash-nycklar. +const ( + FlashGrumpy = "hud.grumpy" + FlashPoisoned = "hud.poisoned" + FlashNoCards = "hud.need_all_cards" +) + // MiniKind är vilket minispel som pågår. type MiniKind int @@ -119,11 +157,12 @@ type FacilityState struct { // RunOptions styr en banomgång. type RunOptions struct { - Speed float64 // rutor per sekund (0 = DefaultSpeed) - Dict *lang.Dictionary // nil = tom ordbok - Know *lang.Knowledge // nil = ny kunskap - Wallet *Wallet // nil = startkassa - Seed rng.Seed // omgångens seed (sparas med spelet) + Speed float64 // rutor per sekund (0 = DefaultSpeed) + Dict *lang.Dictionary // nil = tom ordbok + Know *lang.Knowledge // nil = ny kunskap + Wallet *Wallet // nil = startkassa + Debuffs []Debuff // aktiva debuffar från profilen + Seed rng.Seed // omgångens seed (sparas med spelet) } // DefaultSpeed är spelarens grundfart i rutor per sekund. @@ -177,7 +216,10 @@ func NewRun(l *level.Level, o RunOptions) *Run { baseSpeed: o.Speed, NoticeAt: -1, Fog: NewFog(l, FogRadius), + Stats: CombinedStats(o.Debuffs), + spentStart: o.Wallet.Spent, } + r.Party.Rates = Rates{Thirst: r.Stats[StatThirst], Toilet: r.Stats[StatToilet]} r.Fog.Reveal(l, l.SpawnPoint()) if r.parSec <= 0 { n := len(l.Path(l.SpawnPoint(), l.CorrectPlatform(), l.CanEnter)) @@ -218,9 +260,36 @@ func (r *Run) CanEnter(p level.Point) bool { func (r *Run) canPassGate() bool { if r.Level.TicketRequired { - return r.Wallet.Ticket != "" + if r.Wallet.Ticket == "" { + return false + } + return !r.Level.IndividualCards || r.Wallet.TicketCount >= r.Party.Size() } - return r.Wallet.CardUsable() && r.Wallet.Card >= r.Level.FareYen + if !r.Wallet.CardUsable() || r.Wallet.Card < r.Level.FareYen { + return false + } + if r.Level.IndividualCards { + for _, m := range r.Party.Followers() { + if m.Card < r.Level.FareYen { + return false + } + } + } + return true +} + +// MembersWithoutFare listar följare vars egna kort inte räcker (HUD). +func (r *Run) MembersWithoutFare() []*Member { + if !r.Level.IndividualCards { + return nil + } + var out []*Member + for _, m := range r.Party.Followers() { + if m.Card < r.Level.FareYen { + out = append(out, m) + } + } + return out } func (r *Run) inGate() bool { @@ -240,7 +309,7 @@ func (r *Run) Step(dt float64, want Dir, board bool) { r.Wallet.Drain(dt) before := r.Player.Tile wasGate := r.inGate() - r.Player.Speed = r.baseSpeed * r.Party.SpeedFactor() + r.Player.Speed = r.baseSpeed * r.Party.SpeedFactor() * r.Stats[StatSpeed] if r.Wallet.Phone && r.Wallet.Battery > 0 { r.Player.Speed *= PhoneSpeedFactor } @@ -260,11 +329,18 @@ func (r *Run) Step(dt float64, want Dir, board bool) { r.stepHelp(dt) r.stepFacility(dt) r.stepReading() + r.checkLimits() if r.Player.Tile != before && r.inGate() && !wasGate { r.GatePasses++ if !r.Level.TicketRequired { r.Wallet.PayCard(r.Level.FareYen) - if r.Wallet.Phone && r.Seed.Derive(fmt.Sprintf("rescan:%d", r.GatePasses)).New().Float64() < PhoneRescanChance { + if r.Level.IndividualCards { + for _, m := range r.Party.Followers() { + m.Card -= r.Level.FareYen + r.Wallet.Spent += r.Level.FareYen + } + } + if r.Wallet.Phone && r.Seed.Derive(fmt.Sprintf("rescan:%d", r.GatePasses)).New().Float64() < PhoneRescanChance/r.Stats[StatLuck] { r.Rescans++ r.RescanUntil = r.Time + RescanSec r.flash(FlashRescan) @@ -321,10 +397,22 @@ func (r *Run) startMachine() { } if r.Level.TicketRequired { dest := r.Level.Destination.Get("ja") - r.Mini, r.MiniKind = minigame.NewTicket(r.miniSeed(), dest, r.stationPool(dest, 4), r.Wallet.Cash), MiniTicket + var seats []string + if r.Level.SeatSelection { + seats = r.Party.Names() + } + cash := r.Wallet.Cash + if r.Level.IndividualCards { + cash /= r.Party.Size() // alla behöver en biljett: visa vad som går att köpa per person + } + r.Mini, r.MiniKind = minigame.NewTicket(r.miniSeed(), dest, r.stationPool(dest, 4), cash, seats), MiniTicket return } - r.Mini, r.MiniKind = minigame.NewTopUp(r.miniSeed(), r.Wallet.Cash), MiniTopUp + var members []string + if r.Level.IndividualCards { + members = r.Party.Names() + } + r.Mini, r.MiniKind = minigame.NewTopUp(r.miniSeed(), r.Wallet.Cash, members), MiniTopUp } // tryBoard försöker kliva på: biljetten måste gälla tåget, fulla tåg kräver @@ -348,7 +436,7 @@ func (r *Run) tryBoard(tr *level.Train) { func (r *Run) startRide() { tr := r.PendingTrain if r.Level.TicketRequired { - r.Wallet.Ticket, r.Wallet.TicketFare = "", 0 // biljetten är förbrukad + r.Wallet.Ticket, r.Wallet.TicketFare, r.Wallet.TicketCount = "", 0, 0 // biljetterna är förbrukade } dest := r.Level.Destination.Get("ja") r.Mini, r.MiniKind = minigame.NewRide(r.miniSeed(), dest, r.stationPool(dest, 8), r.Level.RideStops, tr.Correct), MiniRide @@ -365,18 +453,43 @@ func (r *Run) StepMini(dt float64, in minigame.Input) { r.Party.Advance(dt, r.Time) r.Mini.Update(in, dt) if !r.Mini.Done() { + r.checkLimits() return } m := r.Mini r.Mini, r.MiniKind = nil, MiniNone switch g := m.(type) { case *minigame.TopUp: - if g.Success() && r.Wallet.TopUp(g.Amount) { + if !g.Success() { + break + } + if g.Member == 0 { + if r.Wallet.TopUp(g.Amount) { + r.TopUps++ + } + } else if r.Wallet.Cash >= g.Amount { + r.Wallet.Cash -= g.Amount + r.Party.Members[g.Member].Card += g.Amount r.TopUps++ } case *minigame.Ticket: - if g.Success() && g.Chosen != nil && r.Wallet.PayCash(g.Chosen.Fare) { - r.Wallet.Ticket, r.Wallet.TicketFare = g.Chosen.Dest, g.Chosen.Fare + if !g.Success() || g.Chosen == nil { + break + } + count := 1 + if r.Level.IndividualCards { + count = r.Party.Size() + } + if r.Wallet.PayCash(g.Chosen.Fare * count) { + r.Wallet.Ticket, r.Wallet.TicketFare, r.Wallet.TicketCount = g.Chosen.Dest, g.Chosen.Fare, count + } + if len(g.Unhappy) > 0 { + r.Grumpy += len(g.Unhappy) + for _, i := range g.Unhappy { + m := r.Party.Members[i] + m.Meters.Food = max(0, m.Meters.Food-GrumpyFoodPenalty) + } + r.flash(FlashGrumpy) } case *minigame.Crowd: if g.Success() { @@ -432,8 +545,73 @@ func (r *Run) stepFacility(dt float64) { } // buyAtKiosk köper mat och dryck åt alla som behöver, betalat med kortet. +// Med liten seedad otur blir maten dålig: matförgiftning efter banan. func (r *Run) buyAtKiosk() { - r.Served += r.Party.BuyAtKiosk(r.Wallet.PayCard) + n := r.Party.BuyAtKiosk(r.Wallet.PayCard) + if n == 0 { + return + } + r.Served += n + if !r.poisoned && r.Seed.Derive(fmt.Sprintf("poison:%d", r.Served)).New().Float64() < FoodPoisonChance/r.Stats[StatLuck] { + r.poisoned = true + r.flash(FlashPoisoned) + } +} + +// checkLimits förlorar banan när tidsgränsen eller maxantalet missade tåg passeras. +func (r *Run) checkLimits() { + if r.Outcome != Ongoing { + return + } + if r.Level.TimeLimitSec > 0 && r.Time > float64(r.Level.TimeLimitSec) { + r.Mini, r.MiniKind, r.PendingTrain = nil, MiniNone, nil + r.finish(nil, false, LostTimeUp) + return + } + if r.Level.MaxMissedTrains > 0 && r.MissedTrains > r.Level.MaxMissedTrains { + r.finish(nil, false, LostMissedTrains) + } +} + +// TimeLeft är sekunder kvar av tidsgränsen (0 utan gräns). +func (r *Run) TimeLeft() float64 { + if r.Level.TimeLimitSec == 0 { + return 0 + } + return max(0, float64(r.Level.TimeLimitSec)-r.Time) +} + +// computeScore fyller i poängen för en vunnen bana. +func (r *Run) computeScore() { + var sc ScoreBreakdown + sc.Time = int(ScoreTimeMax * min(1, r.parSec/max(r.Time, 0.001))) + sc.Money = max(0, ScoreMoneyMax-(r.Wallet.Spent-r.spentStart)/10) + sc.Meters = int(ScoreMetersMax * r.Party.AvgMeters()) + sc.Explore = int(ScoreExploreMax * r.Fog.Explored(r.Level)) + sc.Penalty = PenaltyMissed*r.MissedTrains + PenaltyRescan*r.Rescans + PenaltyGrumpy*r.Grumpy + sc.Total = max(0, sc.Time+sc.Money+sc.Meters+sc.Explore-sc.Penalty) + r.Score = sc +} + +// earnedDebuffs räknar ut vilka debuffar banan gav. +func (r *Run) earnedDebuffs() []Debuff { + var out []Debuff + if r.Steps >= SoreFeetSteps { + out = append(out, Debuff{SoreFeet, 1}) + } + if r.Time >= TiredSec { + out = append(out, Debuff{Tired, 1}) + } + for _, m := range r.Party.Members { + if m.Meters.Food <= 0 { + out = append(out, Debuff{Hangry, 1}) + break + } + } + if r.poisoned { + out = append(out, Debuff{FoodPoisoning, FoodPoisonLevels}) + } + return out } // FacilityProgress är 0..1 för ett pågående toalettbesök. @@ -472,12 +650,14 @@ func (r *Run) SignHere() *level.SignText { // tillräckligt bra resultat lär man sig resmålets ord. func (r *Run) finish(tr *level.Train, won bool, reason string) { r.Boarded = tr + r.NewDebuffs = r.earnedDebuffs() if !won { r.Outcome = Lost r.LostReason = reason return } r.Outcome = Won + r.computeScore() r.Stars = r.StarsFor(r.Time) r.PointsEarned = r.Know.Award(r.Stars) if r.Stars >= lang.StarsToLearnDestination { @@ -515,7 +695,7 @@ func (r *Run) stepReading() { continue } seen[w] = true - if roll.Float64() >= lang.ReadChance { + if roll.Float64() >= lang.ReadChance*r.Stats[StatFocus] { continue } if r.Know.AddProgress(w) { @@ -547,7 +727,7 @@ func (r *Run) AskHelp() bool { if sg == nil || r.Help.Active || r.Revealed[r.Player.Tile] || r.Outcome != Ongoing { return false } - secs := lang.HelpSeconds(r.Know.Level()) + secs := lang.HelpSeconds(r.Know.Level()) / r.Stats[StatFocus] r.Help = HelpState{Active: true, At: r.Player.Tile, Remaining: secs, Total: secs} return true } diff --git a/internal/sim/run_test.go b/internal/sim/run_test.go index 4744492..b099cad 100644 --- a/internal/sim/run_test.go +++ b/internal/sim/run_test.go @@ -12,6 +12,19 @@ import ( "gitea.brasse-pc.eu/brasse/metro-puzzle-jp/internal/rng" ) +// fillSeats placerar sällskapet på första lediga platser (sittplatssteget). +func fillSeats(r *Run, tk *minigame.Ticket) { + for r.Mini != nil && tk.Stage == minigame.TicketPickSeat { + for tk.SeatTaken(tk.Seat) { + r.StepMini(frame, minigame.Input{MoveX: 1}) + if tk.Seat.Col == 0 { + r.StepMini(frame, minigame.Input{Move: 1}) + } + } + r.StepMini(frame, minigame.Input{Confirm: true}) + } +} + // ride spelar tågresan: kliver av när tåget står vid resmålet. På fel tåg // finns inget resmål, så resan går till slutstationen. func ride(t *testing.T, r *Run) { @@ -487,7 +500,7 @@ func TestTopUpFlowAtMachine(t *testing.T) { } cash := r.Wallet.Cash for g.Buttons[g.Cursor] != "チャージ" { - r.StepMini(frame, minigame.Input{Move: 1}) + r.StepMini(frame, minigame.Input{MoveX: 1}) } r.StepMini(frame, minigame.Input{Confirm: true}) r.StepMini(frame, minigame.Input{Confirm: true}) // första beloppet (1000) @@ -537,6 +550,7 @@ func TestTicketLevelFlow(t *testing.T) { } wrong := tk.Options[tk.Cursor] r.StepMini(frame, minigame.Input{Confirm: true}) + fillSeats(r, tk) // 002 har sittplatsval if r.Wallet.Ticket != wrong.Dest || r.Wallet.Cash != StartCashYen-wrong.Fare { t.Fatalf("biljett=%q cash=%d", r.Wallet.Ticket, r.Wallet.Cash) } @@ -556,6 +570,7 @@ func TestTicketLevelFlow(t *testing.T) { r.StepMini(frame, minigame.Input{Move: 1}) } r.StepMini(frame, minigame.Input{Confirm: true}) + fillSeats(r, tk) if r.Wallet.Ticket != "渋谷" { t.Fatalf("biljett=%q", r.Wallet.Ticket) } @@ -664,3 +679,225 @@ func TestPhoneSpeedRescanAndBattery(t *testing.T) { t.Fatal("ingen fartbuff med dött batteri") } } + +func TestTimeLimitAndMissedTrainsLose(t *testing.T) { + l := loadLevel(t, "002-shinjuku") + r := NewRun(l, RunOptions{Dict: loadDict(t), Seed: rng.FromInt(1)}) + if r.TimeLeft() != float64(l.TimeLimitSec) { + t.Fatalf("TimeLeft=%.0f", r.TimeLeft()) + } + r.Time = float64(l.TimeLimitSec) - 0.5 + for i := 0; i < 60 && r.Outcome == Ongoing; i++ { + r.Step(frame, None, false) + } + if r.Outcome != Lost || r.LostReason != LostTimeUp || r.Boarded != nil { + t.Fatalf("tidsgräns: outcome=%v reason=%q", r.Outcome, r.LostReason) + } + r2 := NewRun(l, RunOptions{Dict: loadDict(t), Seed: rng.FromInt(1)}) + r2.MissedTrains = l.MaxMissedTrains + 1 + r2.Step(frame, None, false) + if r2.Outcome != Lost || r2.LostReason != LostMissedTrains { + t.Fatalf("missade tåg: outcome=%v reason=%q", r2.Outcome, r2.LostReason) + } + // Bana 001 har inga gränser. + r3 := NewRun(loadLevel(t, "001-flygplatsen"), RunOptions{Seed: rng.FromInt(1)}) + r3.Time, r3.MissedTrains = 99999, 99 + r3.Step(frame, None, false) + if r3.Outcome != Ongoing || r3.TimeLeft() != 0 { + t.Fatal("utan gränser förlorar man inte på tid eller missade tåg") + } +} + +func TestScoreBreakdown(t *testing.T) { + l := loadLevel(t, "001-flygplatsen") + r := NewRun(l, RunOptions{Dict: loadDict(t), Seed: rng.FromInt(2)}) + r.Party.nextEventAt = 1e9 + walk(t, r, l.Path(r.Player.Tile, l.CorrectPlatform(), r.CanEnter)) + waitForTrain(t, r) + r.Step(frame, None, true) + ride(t, r) + sc := r.Score + if r.Outcome != Won || sc.Total <= 0 || sc.Total != sc.Time+sc.Money+sc.Meters+sc.Explore-sc.Penalty { + t.Fatalf("score=%+v", sc) + } + if sc.Time != ScoreTimeMax || sc.Money != ScoreMoneyMax-l.FareYen/10 || sc.Penalty != 0 { + t.Fatalf("snabb, billig vinst: %+v", sc) + } + if sc.Meters <= 0 || sc.Meters > ScoreMetersMax || sc.Explore <= 0 || sc.Explore > ScoreExploreMax { + t.Fatalf("mätare/utforskat: %+v", sc) + } + // Avdrag räknas. + r2 := NewRun(l, RunOptions{Dict: loadDict(t), Seed: rng.FromInt(2)}) + r2.MissedTrains, r2.Rescans, r2.Grumpy = 1, 2, 1 + r2.Time = 10 * r2.ParSec() + r2.computeScore() + if r2.Score.Penalty != PenaltyMissed+2*PenaltyRescan+PenaltyGrumpy || r2.Score.Time != ScoreTimeMax/10 { + t.Fatalf("avdrag: %+v", r2.Score) + } +} + +func TestDebuffsAffectRunAndAreEarned(t *testing.T) { + l := loadLevel(t, "001-flygplatsen") + r := NewRun(l, RunOptions{Seed: rng.FromInt(1), Debuffs: []Debuff{{Blisters, 1}, {FoodPoisoning, 1}, {Hangry, 1}}}) + r.Party.nextEventAt = 1e9 + r.Step(frame, Right, false) + if math.Abs(r.Player.Speed-DefaultSpeed*0.8) > 1e-9 || r.Party.Rates.Toilet != 2 || r.Party.Rates.Thirst != 1.2 { + t.Fatalf("speed=%.2f rates=%+v", r.Player.Speed, r.Party.Rates) + } + r.Step(frame, None, false) + for r.Player.Moving() { + r.Step(frame, None, false) + } + walk(t, r, l.Path(r.Player.Tile, l.Find(level.Sign)[1], r.CanEnter)) + r.AskHelp() + if want := lang.HelpSeconds(0) / 0.7; math.Abs(r.Help.Total-want) > 1e-9 { + t.Fatalf("hjälptid med dåligt fokus %.2f, vill ha %.2f", r.Help.Total, want) + } + // Intjänade debuffar: många steg, lång tid, tom matmätare. + r.Steps, r.Time = SoreFeetSteps, TiredSec + r.Party.Members[1].Meters.Food = 0 + r.finish(nil, false, LostTimeUp) + kinds := map[DebuffKind]bool{} + for _, d := range r.NewDebuffs { + kinds[d.Kind] = true + } + if !kinds[SoreFeet] || !kinds[Tired] || !kinds[Hangry] || kinds[FoodPoisoning] { + t.Fatalf("intjänade=%v", r.NewDebuffs) + } +} + +func TestIndividualCardsAtGateAndMachine(t *testing.T) { + l := loadLevel(t, "003-shibuya") + if !l.IndividualCards || !l.TicketRequired || !l.SeatSelection || l.Party != 4 { + t.Fatal("003 ska ha egna kort, biljetter, sittplatser och fyra i sällskapet") + } + // Egna kort på en kortbana (utan biljettkrav): alla måste ha saldo. + l1 := loadLevel(t, "001-flygplatsen") + l1.IndividualCards = true + r := NewRun(l1, RunOptions{Dict: loadDict(t), Seed: rng.FromInt(1)}) + r.Party.nextEventAt = 1e9 + gate := l1.Find(level.Gate)[0] + anna := r.Party.Members[1] + if anna.Card != MemberCardYen || !r.CanEnter(gate) { + t.Fatalf("Annas kort=%d canEnter=%v", anna.Card, r.CanEnter(gate)) + } + anna.Card = 0 + if r.CanEnter(gate) || len(r.MembersWithoutFare()) != 1 { + t.Fatal("utan saldo på Annas kort stoppar spärren alla") + } + // Fyll på Annas kort i automaten (personval först). + walk(t, r, l1.Path(r.Player.Tile, l1.Find(level.TicketMachine)[0], r.CanEnter)) + r.Step(frame, None, true) + g := r.Mini.(*minigame.TopUp) + if g.Stage != minigame.TopUpPickMember || len(g.Members) != 2 { + t.Fatalf("stage=%v members=%v", g.Stage, g.Members) + } + r.StepMini(frame, minigame.Input{Move: 1}) + r.StepMini(frame, minigame.Input{Confirm: true}) + for g.Buttons[g.Cursor] != "チャージ" { + r.StepMini(frame, minigame.Input{MoveX: 1}) + } + r.StepMini(frame, minigame.Input{Confirm: true}) + r.StepMini(frame, minigame.Input{Confirm: true}) + cash := r.Wallet.Cash + for i := 0; i < 600 && r.Mini != nil; i++ { + r.StepMini(frame, minigame.Input{Hold: true}) + } + if anna.Card != 1000 || r.Wallet.Cash != cash-1000 || r.Wallet.Card != StartCardYen { + t.Fatalf("Annas kort=%d cash=%d eget=%d", anna.Card, r.Wallet.Cash, r.Wallet.Card) + } + // Spärren drar från allas kort. + before := r.Wallet.Spent + path := l1.Path(r.Player.Tile, gate, r.CanEnter) + for i, p := range path { + if l1.At(p.X, p.Y) == level.Gate { + path = path[:i+1] + break + } + } + walk(t, r, path) + if anna.Card != 1000-l1.FareYen || r.Wallet.Card != StartCardYen-l1.FareYen || r.Wallet.Spent != before+2*l1.FareYen { + t.Fatalf("efter spärren: anna=%d egen=%d spent=%d", anna.Card, r.Wallet.Card, r.Wallet.Spent) + } +} + +// TestLevel003Flow: biljettbana med egna kort och sittplatser – alla +// behöver biljett, sällskapet placeras, och boten vinner. +func TestLevel003Flow(t *testing.T) { + l := loadLevel(t, "003-shibuya") + r := NewRun(l, RunOptions{Dict: loadDict(t), Seed: rng.FromInt(21)}) + r.Party.nextEventAt = 1e9 + machine := l.Find(level.TicketMachine)[0] + walk(t, r, l.Path(r.Player.Tile, machine, r.CanEnter)) + r.Step(frame, None, true) + tk := r.Mini.(*minigame.Ticket) + if len(tk.Members) != 4 || tk.Cash != StartCashYen/4 { + t.Fatalf("members=%v cash=%d", tk.Members, tk.Cash) + } + for tk.Options[tk.Cursor].Dest != "池袋" { + r.StepMini(frame, minigame.Input{Move: 1}) + } + fare := tk.Options[tk.Cursor].Fare + r.StepMini(frame, minigame.Input{Confirm: true}) + if tk.Stage != minigame.TicketPickSeat { + t.Fatal("sittplatsval ska följa") + } + // Placera alla så att önskemålen uppfylls när det går: prova platser tills nöjd. + for cur := 0; r.Mini != nil; cur++ { + best := minigame.Seat{Row: -1} + for row := 0; row < minigame.SeatRows && best.Row < 0; row++ { + for col := 0; col < minigame.SeatCols; col++ { + cand := minigame.Seat{Row: row, Col: col} + if tk.SeatTaken(cand) { + continue + } + trial := append([]minigame.Seat(nil), tk.Assigned...) + trial[cur] = cand + ok := true + for _, p := range tk.Prefs { + if p.Member == cur && !p.Satisfied(trial) { + ok = false + } + } + if ok { + best = cand + break + } + } + } + if best.Row < 0 { + t.Fatal("ingen ledig plats") + } + for tk.Seat != best { + in := minigame.Input{} + if tk.Seat.Row != best.Row { + in.Move = 1 + } else { + in.MoveX = 1 + } + r.StepMini(frame, in) + } + r.StepMini(frame, minigame.Input{Confirm: true}) + } + if r.Wallet.TicketCount != 4 || r.Wallet.Ticket != "池袋" || r.Wallet.Cash != StartCashYen-4*fare { + t.Fatalf("biljetter=%d dest=%q cash=%d", r.Wallet.TicketCount, r.Wallet.Ticket, r.Wallet.Cash) + } + // Den giriga placeringen kan missa "bredvid X" som placeras senare; det + // är tillåtet men ska då synas som missnöje. + if r.Grumpy > 0 && r.FlashKey != FlashGrumpy { + t.Fatal("missnöje ska flashas") + } + goal := l.CorrectPlatform() + walk(t, r, l.Path(r.Player.Tile, goal, r.CanEnter)) + waitForTrain(t, r) + r.Step(frame, None, true) + cr := r.Mini.(*minigame.Crowd) + for i := 0; i < 600 && !cr.InZone(); i++ { + r.StepMini(frame, minigame.Input{}) + } + r.StepMini(frame, minigame.Input{Confirm: true}) + ride(t, r) + if r.Outcome != Won || r.Wallet.TicketCount != 0 { + t.Fatalf("outcome=%v reason=%q tickets=%d", r.Outcome, r.LostReason, r.Wallet.TicketCount) + } +} diff --git a/internal/sim/stats.go b/internal/sim/stats.go new file mode 100644 index 0000000..13a1888 --- /dev/null +++ b/internal/sim/stats.go @@ -0,0 +1,121 @@ +package sim + +// Stats är spelarens multiplikatorer: 1,0 = normalt. Debuffar (och i M8 +// items/skills) ändrar dem. +type Stats [5]float64 + +// Statindex. +const ( + StatSpeed = iota // gångfart + StatThirst // hur fort dryckesmätaren sjunker (>1 = fortare) + StatFocus // chans att lära av skyltar, hjälptid (>1 = bättre) + StatToilet // hur fort toamätaren sjunker (>1 = fortare) + StatLuck // omskanning, trängsel (>1 = bättre; items i M8) +) + +// DefaultStats är allt på 1,0. +func DefaultStats() Stats { return Stats{1, 1, 1, 1, 1} } + +// DebuffKind är en typ av debuff (textnyckel: "debuff."). +type DebuffKind string + +// Debuffar. De fyra första uppstår av spelandet (M7), resten delas ut av +// sidouppdrag (M10) och varar 1–4 banor. +const ( + SoreFeet DebuffKind = "sore_feet" // många steg + Tired DebuffKind = "tired" // lång bana + Hangry DebuffKind = "hangry" // tom matmätare + FoodPoisoning DebuffKind = "food_poisoning" // otur vid kiosken + DOMS DebuffKind = "doms" // träningsvärk + Blisters DebuffKind = "blisters" // skoskav + HeavyBag DebuffKind = "heavy_bag" // köpt något tungt/stort + Stuffed DebuffKind = "stuffed" // proppmätt + Sweaty DebuffKind = "sweaty" // svettig och varm +) + +// DebuffEffects är vad varje debuff gör med statsen. +var DebuffEffects = map[DebuffKind]Stats{ + SoreFeet: {0.85, 1, 1, 1, 1}, + Tired: {0.9, 1, 0.8, 1, 1}, + Hangry: {1, 1.2, 0.7, 1, 1}, + FoodPoisoning: {1, 1, 1, 2.0, 1}, + DOMS: {0.9, 1, 1, 1, 1}, + Blisters: {0.8, 1, 1, 1, 1}, + HeavyBag: {0.9, 1.2, 1, 1, 1}, + Stuffed: {0.9, 1, 1, 1.3, 1}, + Sweaty: {1, 1.5, 0.9, 1, 1}, +} + +// Utlösare för de spelgenererade debuffarna. +const ( + SoreFeetSteps = 150 + TiredSec = 300.0 + FoodPoisonChance = 0.05 + FoodPoisonLevels = 2 +) + +// Debuff är en aktiv debuff med återstående antal banor. +type Debuff struct { + Kind DebuffKind `json:"kind"` + LevelsLeft int `json:"levelsLeft"` +} + +// CombinedStats multiplicerar ihop effekterna av alla debuffar. +func CombinedStats(debuffs []Debuff) Stats { + st := DefaultStats() + for _, d := range debuffs { + if e, ok := DebuffEffects[d.Kind]; ok { + for i := range st { + st[i] *= e[i] + } + } + } + return st +} + +// Profile är det som följer spelaren mellan banor och inte hör till +// kunskap eller plånbok: aktiva debuffar (items och skills i M8). +type Profile struct { + Debuffs []Debuff `json:"debuffs"` +} + +// Add lägger till en debuff; finns den redan förlängs den till det längsta. +func (p *Profile) Add(kind DebuffKind, levels int) { + for i := range p.Debuffs { + if p.Debuffs[i].Kind == kind { + p.Debuffs[i].LevelsLeft = max(p.Debuffs[i].LevelsLeft, levels) + return + } + } + p.Debuffs = append(p.Debuffs, Debuff{Kind: kind, LevelsLeft: levels}) +} + +// Has rapporterar om debuffen är aktiv. +func (p *Profile) Has(kind DebuffKind) bool { + for _, d := range p.Debuffs { + if d.Kind == kind { + return true + } + } + return false +} + +// EndLevel räknar ned alla debuffar en bana och tar bort de som gått ut. +// Returnerar de som försvann. +func (p *Profile) EndLevel() []DebuffKind { + var expired []DebuffKind + kept := p.Debuffs[:0] + for _, d := range p.Debuffs { + d.LevelsLeft-- + if d.LevelsLeft <= 0 { + expired = append(expired, d.Kind) + continue + } + kept = append(kept, d) + } + p.Debuffs = kept + return expired +} + +// Stats är de sammanlagda multiplikatorerna just nu. +func (p *Profile) Stats() Stats { return CombinedStats(p.Debuffs) } diff --git a/internal/sim/stats_test.go b/internal/sim/stats_test.go new file mode 100644 index 0000000..00b0251 --- /dev/null +++ b/internal/sim/stats_test.go @@ -0,0 +1,45 @@ +package sim + +import "testing" + +func TestDebuffEffectsAndProfile(t *testing.T) { + if DefaultStats() != (Stats{1, 1, 1, 1, 1}) { + t.Fatal("default") + } + for kind, e := range DebuffEffects { + changed := false + for i := range e { + if e[i] != 1 { + changed = true + } + } + if !changed { + t.Errorf("%s påverkar inget", kind) + } + } + st := CombinedStats([]Debuff{{SoreFeet, 1}, {Blisters, 1}}) + if st[StatSpeed] < 0.67 || st[StatSpeed] > 0.69 || st[StatThirst] != 1 { + t.Fatalf("kombinerad fart %.3f", st[StatSpeed]) + } + + var p Profile + p.Add(Tired, 1) + p.Add(DOMS, 3) + p.Add(Tired, 2) // förlängs, inte dubbleras + if len(p.Debuffs) != 2 || !p.Has(Tired) || p.Debuffs[0].LevelsLeft != 2 { + t.Fatalf("debuffs=%v", p.Debuffs) + } + if p.Stats()[StatSpeed] != 0.9*0.9 { + t.Fatalf("stats=%v", p.Stats()) + } + if exp := p.EndLevel(); len(exp) != 0 || len(p.Debuffs) != 2 { + t.Fatalf("efter bana 1: exp=%v debuffs=%v", exp, p.Debuffs) + } + if exp := p.EndLevel(); len(exp) != 1 || exp[0] != Tired || len(p.Debuffs) != 1 || p.Debuffs[0].Kind != DOMS { + t.Fatalf("efter bana 2: exp=%v debuffs=%v", exp, p.Debuffs) + } + p.EndLevel() + if len(p.Debuffs) != 0 || p.Has(DOMS) { + t.Fatal("DOMS ska ha gått ut efter tre banor") + } +} diff --git a/internal/sim/wallet.go b/internal/sim/wallet.go index b263679..c375de2 100644 --- a/internal/sim/wallet.go +++ b/internal/sim/wallet.go @@ -3,13 +3,14 @@ package sim // Wallet är spelarens pengar och biljetter. Följer med mellan banor // (sparas i M8). type Wallet struct { - Card int `json:"card"` // IC-kortets saldo (yen) - Cash int `json:"cash"` // kontanter (yen) - Phone bool `json:"phone"` // kortet ligger i telefonen - Battery float64 `json:"battery"` // telefonens batteri 0..100 - Ticket string `json:"ticket"` // köpt pappersbiljett: resmålets namn (ja), "" = ingen - TicketFare int `json:"ticketFare"` // vad biljetten kostade - Spent int `json:"spent"` // totalt spenderat (poäng i M7) + Card int `json:"card"` // IC-kortets saldo (yen) + Cash int `json:"cash"` // kontanter (yen) + Phone bool `json:"phone"` // kortet ligger i telefonen + Battery float64 `json:"battery"` // telefonens batteri 0..100 + Ticket string `json:"ticket"` // köpt pappersbiljett: resmålets namn (ja), "" = ingen + TicketFare int `json:"ticketFare"` // vad biljetten kostade + TicketCount int `json:"ticketCount"` // antal biljetter (egna kort: en per person) + Spent int `json:"spent"` // totalt spenderat (poäng i M7) } // Pengar och telefon. diff --git a/resources/data/levels/002-shinjuku.json b/resources/data/levels/002-shinjuku.json index 65e60c0..1fa634d 100644 --- a/resources/data/levels/002-shinjuku.json +++ b/resources/data/levels/002-shinjuku.json @@ -1,21 +1,11 @@ { - "id": "002-shinjuku", - "name": { - "en": "Shinjuku Station", - "ja": "新宿駅", - "sv": "Shinjuku station" - }, - "difficulty": 2, - "party": 3, - "ticketRequired": true, - "rideStops": 4, "destination": { "en": "Shibuya", "ja": "渋谷", "romaji": "Shibuya", "sv": "Shibuya" }, - "timeLimitSec": 0, + "difficulty": 2, "fareYen": 200, "grid": [ "#################################", @@ -23,7 +13,7 @@ "#.#.#.#.#.#.#######.#.#########.#", "#.#W#.#.#.#.#.....#.#...........#", "#.###.#.#.#.#####.#.###########.#", - "#.#...#.#.........#.#.......#...#", + "#.#...#.#..i......#.#.......#...#", "#.#.###.###########.#.#.###.#.###", "#.....#.......#...#.#.#.........#", "#####.#######.#.#.#.#.#########.#", @@ -35,14 +25,56 @@ "#.#.###.###.#.###.#.#.#######.#.#", "#...#T#.#..i#.#.#...#.....#...#.#", "#####.#.#.#.#.#.#####.#####.###.#", - "#.....#.#.#.#..i....#.......#...#", + "#.....#.#.#.#.......#.......#...#", "#G#.#.#.#.#########.#########.#G#", "#pG.#...#.....................#P#", "#################################" ], + "id": "002-shinjuku", + "maxMissedTrains": 2, + "name": { + "en": "Shinjuku Station", + "ja": "新宿駅", + "sv": "Shinjuku station" + }, + "party": 3, + "rideStops": 4, + "seatSelection": true, + "signs": [ + { + "text": { + "en": "Shinjuku Station. Track 14 Yamanote Line for Shibuya: far bottom right. Track 8 Chuo Line for Tokyo: far bottom left.", + "ja": "新宿駅 14番線 山手線 渋谷方面 → 南東 8番線 中央線 東京方面 → 南西", + "sv": "Shinjuku station. Spår 14 Yamanote-linjen mot Shibuya: längst ner till höger. Spår 8 Chuo-linjen mot Tokyo: längst ner till vänster." + }, + "x": 5, + "y": 1 + }, + { + "text": { + "en": "\u003c- Track 8 Chuo Line (Tokyo) Track 14 Yamanote Line (Shibuya) -\u003e", + "ja": "← 8番線 中央線 東京方面 14番線 山手線 渋谷方面 →", + "sv": "\u003c- Spår 8 Chuo-linjen (Tokyo) Spår 14 Yamanote-linjen (Shibuya) -\u003e" + }, + "x": 11, + "y": 15 + }, + { + "text": { + "en": "Track 14 Yamanote Line for Shibuya: the gate in the south-east corner.", + "ja": "14番線 山手線 渋谷方面 → 南東口 改札", + "sv": "Spår 14 Yamanote-linjen mot Shibuya: spärren i sydöstra hörnet." + }, + "x": 11, + "y": 5 + } + ], + "ticketRequired": true, + "timeLimitSec": 420, "trains": [ { "correct": true, + "crowded": true, "destination": { "en": "Shibuya", "ja": "渋谷", @@ -59,8 +91,7 @@ "intervalSec": 20, "offsetSec": 3 }, - "track": "14", - "crowded": true + "track": "14" }, { "correct": false, @@ -82,34 +113,5 @@ }, "track": "8" } - ], - "signs": [ - { - "text": { - "en": "Shinjuku Station. Track 14 Yamanote Line for Shibuya: far bottom right. Track 8 Chuo Line for Tokyo: far bottom left.", - "ja": "新宿駅 14番線 山手線 渋谷方面 → 南東 8番線 中央線 東京方面 → 南西", - "sv": "Shinjuku station. Spår 14 Yamanote-linjen mot Shibuya: längst ner till höger. Spår 8 Chuo-linjen mot Tokyo: längst ner till vänster." - }, - "x": 5, - "y": 1 - }, - { - "text": { - "en": "<- Track 8 Chuo Line (Tokyo) Track 14 Yamanote Line (Shibuya) ->", - "ja": "← 8番線 中央線 東京方面 14番線 山手線 渋谷方面 →", - "sv": "<- Spår 8 Chuo-linjen (Tokyo) Spår 14 Yamanote-linjen (Shibuya) ->" - }, - "x": 11, - "y": 15 - }, - { - "text": { - "en": "Track 14 Yamanote Line for Shibuya: the gate in the south-east corner.", - "ja": "14番線 山手線 渋谷方面 → 南東口 改札", - "sv": "Spår 14 Yamanote-linjen mot Shibuya: spärren i sydöstra hörnet." - }, - "x": 15, - "y": 17 - } ] -} +} \ No newline at end of file diff --git a/resources/data/levels/003-shibuya.json b/resources/data/levels/003-shibuya.json new file mode 100644 index 0000000..dd7815c --- /dev/null +++ b/resources/data/levels/003-shibuya.json @@ -0,0 +1,118 @@ +{ + "destination": { + "en": "Ikebukuro", + "ja": "池袋", + "romaji": "Ikebukuro", + "sv": "Ikebukuro" + }, + "difficulty": 3, + "fareYen": 200, + "grid": [ + "#################################", + "#S.........W#....i........#.....#", + "#.#####.#.###.###.#####.#.#.#####", + "#.#...#.#.....#...#.....#.#.....#", + "#.#.#.#.#######.###.#####.#.###.#", + "#.#.#.#.....#...#......i..#.#...#", + "#.#.#.#####.#.#.#.#####.#####.###", + "#...#.#...#...#.#.....#.#...#...#", + "#####.#.#.#####.#####.#.#.#.###.#", + "#T#...#.#...#K#.....#.#...#...#.#", + "#.#.###.###.#.#####.#.#######.#.#", + "#.#.#...#...#...#...#...#...#...#", + "#.#.#.#.#.#.#.###.#####.#.#.#####", + "#...#.#.#.#.#.....#...#...#..i..#", + "#.#####.#.#.#######.#.#######.#.#", + "#.....#.#.#.....#...#...#...#.#.#", + "#####.#.#.#####.#.#####.#.#.#.#.#", + "#...#...#.....#.#.#.#...#.#.#.#.#", + "#G#######.#####.#.#.#.###.#.#.#G#", + "#pG...............#.......#...GP#", + "#################################" + ], + "id": "003-shibuya", + "individualCards": true, + "maxMissedTrains": 1, + "name": { + "en": "Shibuya Station", + "ja": "渋谷駅", + "sv": "Shibuya station" + }, + "party": 4, + "rideStops": 5, + "seatSelection": true, + "signs": [ + { + "text": { + "en": "Shibuya Station. Track 2 Yamanote Line for Ikebukuro: south-east. Track 4 Tokyu Toyoko Line for Yokohama: south-west. Tickets at the machine.", + "ja": "渋谷駅 2番線 山手線 池袋方面 → 南東 4番線 東急東横線 横浜方面 → 南西 切符 自動券売機", + "sv": "Shibuya station. Spår 2 Yamanote-linjen mot Ikebukuro: sydöst. Spår 4 Tokyu Toyoko-linjen mot Yokohama: sydväst. Biljetter i automaten." + }, + "x": 17, + "y": 1 + }, + { + "text": { + "en": "\u003c- Track 4 Tokyu Toyoko Line (Yokohama) Track 2 Yamanote Line (Ikebukuro) -\u003e", + "ja": "← 4番線 東急東横線 横浜方面 2番線 山手線 池袋方面 →", + "sv": "\u003c- Spår 4 Tokyu Toyoko-linjen (Yokohama) Spår 2 Yamanote-linjen (Ikebukuro) -\u003e" + }, + "x": 23, + "y": 5 + }, + { + "text": { + "en": "Track 2 Yamanote Line for Ikebukuro: the gate in the south-east corner. Everyone needs a ticket and card balance.", + "ja": "2番線 山手線 池袋方面 → 南東口 改札", + "sv": "Spår 2 Yamanote-linjen mot Ikebukuro: spärren i sydöstra hörnet. Alla behöver biljett och saldo på kortet." + }, + "x": 29, + "y": 13 + } + ], + "ticketRequired": true, + "timeLimitSec": 360, + "trains": [ + { + "correct": true, + "crowded": true, + "destination": { + "en": "Ikebukuro", + "ja": "池袋", + "romaji": "Ikebukuro" + }, + "line": { + "en": "Yamanote Line", + "ja": "山手線", + "romaji": "Yamanote-sen" + }, + "platform": "P", + "schedule": { + "dwellSec": 7, + "intervalSec": 25, + "offsetSec": 6 + }, + "track": "2" + }, + { + "correct": false, + "destination": { + "en": "Yokohama", + "ja": "横浜", + "romaji": "Yokohama" + }, + "line": { + "en": "Tokyu Toyoko Line", + "ja": "東急東横線", + "romaji": "Tokyu Toyoko-sen" + }, + "platform": "p", + "schedule": { + "dwellSec": 8, + "intervalSec": 30, + "offsetSec": 12 + }, + "track": "4" + } + ] +} \ No newline at end of file diff --git a/resources/text/en.json b/resources/text/en.json index d78973a..cf3011b 100644 --- a/resources/text/en.json +++ b/resources/text/en.json @@ -91,5 +91,41 @@ "mini.crowd.title": "Crowded train - squeeze in", "mini.crowd.hint": "Press Enter when the marker is in the green zone (%d tries left)", "mini.ride.title": "On the train - next stop", - "mini.ride.hint": "Enter: get off here (you are going to %s)" + "mini.ride.hint": "Enter: get off here (you are going to %s)", + "hud.time_left": "Left", + "hud.debuffs": "Debuffs", + "hud.grumpy": "Someone is grumpy about their seat…", + "hud.poisoned": "That snack tasted odd…", + "hud.need_all_cards": "Gate: %s has no money on the card.", + "hud.need_all_tickets": "Gate: everyone needs a ticket.", + "result.lost_time_up": "Time ran out.", + "result.lost_missed_trains": "Too many missed trains.", + "result.score": "Score", + "result.money": "money", + "result.meters": "meters", + "result.new_debuffs": "New debuffs", + "mini.topup.member": "Whose card to top up?", + "mini.seat.hint": "Pick a seat for %s (arrows, Enter)", + "mini.seat.prefs": "Wishes:", + "seat.front": "← direction of travel", + "seat.window": "window", + "seat.aisle": "aisle", + "seat.left": "left side", + "seat.right": "right side", + "seat.with": "next to %s", + "debuff.sore_feet": "sore feet", + "debuff.tired": "tired", + "debuff.hangry": "hangry", + "debuff.food_poisoning": "food poisoning", + "debuff.doms": "sore muscles", + "debuff.blisters": "blisters", + "debuff.heavy_bag": "heavy bag", + "debuff.stuffed": "stuffed", + "debuff.sweaty": "sweaty and hot", + "hud.cash_short": "Cash", + "hud.missed_short": "Miss", + "result.penalty": "penalty", + "result.lang_points": "language points", + "result.missed_short": "Missed", + "result.map": "map" } diff --git a/resources/text/jp-dictionary.json b/resources/text/jp-dictionary.json index 457d2c7..bdc4872 100644 --- a/resources/text/jp-dictionary.json +++ b/resources/text/jp-dictionary.json @@ -481,5 +481,55 @@ "sv": "Nippori", "tier": 3, "kind": "station" + }, + "横浜": { + "kana": "よこはま", + "romaji": "Yokohama", + "en": "Yokohama", + "sv": "Yokohama", + "tier": 3, + "kind": "station" + }, + "東急東横線": { + "kana": "とうきゅうとうよこせん", + "romaji": "Tokyu Toyoko-sen", + "en": "Tokyu Toyoko Line", + "sv": "Tokyu Toyoko-linjen", + "tier": 3 + }, + "渋谷駅": { + "kana": "しぶやえき", + "romaji": "Shibuya-eki", + "en": "Shibuya Station", + "sv": "Shibuya station", + "tier": 3 + }, + "北": { + "kana": "きた", + "romaji": "kita", + "en": "north", + "sv": "norr", + "tier": 2 + }, + "南": { + "kana": "みなみ", + "romaji": "minami", + "en": "south", + "sv": "söder", + "tier": 2 + }, + "東": { + "kana": "ひがし", + "romaji": "higashi", + "en": "east", + "sv": "öster", + "tier": 2 + }, + "西": { + "kana": "にし", + "romaji": "nishi", + "en": "west", + "sv": "väster", + "tier": 2 } } diff --git a/resources/text/sv.json b/resources/text/sv.json index c315b37..c9f8f08 100644 --- a/resources/text/sv.json +++ b/resources/text/sv.json @@ -91,5 +91,41 @@ "mini.crowd.title": "Fullt tåg - tränga sig på", "mini.crowd.hint": "Tryck Enter när markören är i det gröna fältet (%d försök kvar)", "mini.ride.title": "På tåget - nästa station", - "mini.ride.hint": "Enter: kliv av här (du ska till %s)" + "mini.ride.hint": "Enter: kliv av här (du ska till %s)", + "hud.time_left": "Kvar", + "hud.debuffs": "Debuffar", + "hud.grumpy": "Någon är sur över sittplatsen…", + "hud.poisoned": "Den där matbiten smakade konstigt…", + "hud.need_all_cards": "Spärren: %s har inte pengar på kortet.", + "hud.need_all_tickets": "Spärren: alla behöver en biljett.", + "result.lost_time_up": "Tiden tog slut.", + "result.lost_missed_trains": "För många missade tåg.", + "result.score": "Poäng", + "result.money": "pengar", + "result.meters": "mätare", + "result.new_debuffs": "Nya debuffar", + "mini.topup.member": "Vems kort ska fyllas på?", + "mini.seat.hint": "Välj plats åt %s (pilar, Enter)", + "mini.seat.prefs": "Önskemål:", + "seat.front": "← färdriktning", + "seat.window": "fönster", + "seat.aisle": "gången", + "seat.left": "vänster sida", + "seat.right": "höger sida", + "seat.with": "bredvid %s", + "debuff.sore_feet": "onda fötter", + "debuff.tired": "trötthet", + "debuff.hangry": "hunger/irritation", + "debuff.food_poisoning": "matförgiftning", + "debuff.doms": "träningsvärk", + "debuff.blisters": "skoskav", + "debuff.heavy_bag": "tungt köp", + "debuff.stuffed": "proppmätt", + "debuff.sweaty": "svettig och varm", + "hud.cash_short": "Kont", + "hud.missed_short": "Miss", + "result.penalty": "avdrag", + "result.lang_points": "språkpoäng", + "result.missed_short": "Missade", + "result.map": "karta" } diff --git a/tools/shots/main.go b/tools/shots/main.go index 62e4eb6..20c33ef 100644 --- a/tools/shots/main.go +++ b/tools/shots/main.go @@ -56,6 +56,14 @@ func buildShots(levelsDir string) error { if err != nil { return err } + l3, err := level.LoadFile(filepath.Join(levelsDir, "003-shibuya.json")) + if err != nil { + return err + } + toMachine3, err := moves(l3, l3.SpawnPoint(), l3.Find(level.TicketMachine)[0]) + if err != nil { + return err + } // Skyltbilderna tas med några kända ord så att markeringen och den // delvisa översättningen syns; hjälpen lär sedan in nästa ord. known := []string{"-know", "改札,番線,方面", "-seed", "7"} @@ -68,6 +76,8 @@ func buildShots(levelsDir string) error { "; waittrain; wait 30; shot $OUT/platform.png; press enter; wait 40; shot $OUT/ride.png; waitstop; press enter; wait 5; shot $OUT/result.png; quit", known}, {"001-flygplatsen", toMachine + "; press enter; wait 5; press right; wait 5; shot $OUT/topup.png; quit", []string{"-seed", "7", "-card", "0"}}, {"002-shinjuku", toMachine2 + "; press enter; wait 5; shot $OUT/ticket.png; quit", []string{"-seed", "7", "-know", "渋谷"}}, + {"003-shibuya", toMachine3 + "; press enter; pick 池袋; press enter; wait 5; press enter; press right; wait 5; shot $OUT/seats.png; quit", + []string{"-seed", "7", "-know", "池袋", "-debuffs", "sore_feet"}}, } return nil }