From 5b0a1edb6d11c74539f3a90891601526be0b134b Mon Sep 17 00:00:00 2001 From: Jonathan Moallem Date: Tue, 16 Sep 2025 22:27:14 +1000 Subject: [PATCH 1/8] Updated GitHub Actions Godot version to 4.5 --- .github/workflows/submit-develop.yml | 2 +- .github/workflows/verify-develop.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/submit-develop.yml b/.github/workflows/submit-develop.yml index 4534bc5..ca34b52 100644 --- a/.github/workflows/submit-develop.yml +++ b/.github/workflows/submit-develop.yml @@ -5,7 +5,7 @@ on: branches: [ 'develop' ] env: - GODOT_VERSION: 4.4 + GODOT_VERSION: 4.5 VERSION_FILE: project.godot VERSION_REGEX: config\/version=\"\K[0-9.\-A-z]* diff --git a/.github/workflows/verify-develop.yml b/.github/workflows/verify-develop.yml index 448c384..fb9825d 100644 --- a/.github/workflows/verify-develop.yml +++ b/.github/workflows/verify-develop.yml @@ -5,7 +5,7 @@ on: branches: [ 'develop' ] env: - GODOT_VERSION: 4.4 + GODOT_VERSION: 4.5 VERSION_FILE: project.godot VERSION_REGEX: config\/version=\"\K[0-9.\-A-z]* From 23d67047522eaf9c576b0dc75819220b90544a51 Mon Sep 17 00:00:00 2001 From: Jonathan Moallem Date: Tue, 16 Sep 2025 22:27:52 +1000 Subject: [PATCH 2/8] Bumped patch version to v0.1.12 --- project.godot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project.godot b/project.godot index a06f37e..d53ab32 100644 --- a/project.godot +++ b/project.godot @@ -11,7 +11,7 @@ config_version=5 [application] config/name="Sunflower" -config/version="0.1.11" +config/version="0.1.12" run/main_scene="res://assets/common/scenes/game_world.tscn" config/features=PackedStringArray("4.4", "Forward Plus") config/icon="res://assets/common/icons/application_icon.svg" From f3cbeeaa0ae9b86887a2908ccd6763f4880cd914 Mon Sep 17 00:00:00 2001 From: Jonathan Moallem Date: Tue, 16 Sep 2025 22:40:14 +1000 Subject: [PATCH 3/8] Upgraded project and assets to Godot 4.5 --- .../models/beans/crop_beans_decayed_mesh.res | Bin 80120 -> 80487 bytes .../models/beans/crop_beans_growing_mesh.res | Bin 24044 -> 24267 bytes .../models/beans/crop_beans_grown_mesh.res | Bin 80118 -> 80413 bytes .../models/beans/crop_beans_planted_mesh.res | Bin 9584 -> 9879 bytes .../cabbage/crop_cabbage_decayed_mesh.res | Bin 16870 -> 17165 bytes .../cabbage/crop_cabbage_growing_mesh.res | Bin 7166 -> 7461 bytes .../cabbage/crop_cabbage_grown_mesh.res | Bin 16868 -> 17163 bytes assets/content/crops/models/crops.glb.import | 38 +++++++++++++----- .../models/sapling/crop_sapling_mesh.res | Bin 6038 -> 6333 bytes .../sunflower/crop_sunflower_decayed_mesh.res | Bin 27152 -> 27415 bytes .../sunflower/crop_sunflower_growing_mesh.res | Bin 15136 -> 15455 bytes .../sunflower/crop_sunflower_grown_mesh.res | Bin 26558 -> 26949 bytes .../content/zones/campfire/campfire_zone.tscn | 8 ++-- assets/datatables/tables/characters_dt.tres | 3 -- assets/datatables/tables/crops_dt.tres | 18 --------- assets/datatables/tables/items_dt.tres | 6 --- assets/datatables/tables/levels_dt.tres | 2 - assets/environment/materials/terrain.tres | 3 +- project.godot | 2 +- 19 files changed, 32 insertions(+), 48 deletions(-) diff --git a/assets/content/crops/models/beans/crop_beans_decayed_mesh.res b/assets/content/crops/models/beans/crop_beans_decayed_mesh.res index cbd6ff87687109d8473c55ab00fb511fbabe1b1c..6ba35098feba64a1a38b05d7ed24854f879fcaec 100644 GIT binary patch literal 80487 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 MBaUUg`t@r52lW}V{{R30 diff --git a/assets/content/crops/models/beans/crop_beans_growing_mesh.res b/assets/content/crops/models/beans/crop_beans_growing_mesh.res index 5012096130f8b0c8b0d1683819264a87442ff81e..88e3d7c4b8a7d7d8487567c17af7f1c16e8ebc69 100644 GIT binary patch delta 2669 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 MtYH~U|2HuI4X8@pk^lez delta 27122 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 delta 704 zcmYk4OK1~O6o$_vDb_YfQ=MWvlX)4XvDRkOOw&vglUfxaE~@Tah!i6T!Dyl`TnN7E zqt^B;d@RJBV{s$12xtO6(2a}gUL#2m z|LiuU(qgz@DtiNASK=3P%=xlqxUu{+n+gB^=eUcX>N9$|F;KZtzxpiR5P5Uu7{ z>KpUlU+K?QZeAylHs1ovS=gT~3?`5xOgX@nA_(lC}m z`>_l%k*nYcG99X8!ho8f?sruF+cOsY_NSk7yJap!>IHGO;&(Nuf_W9x{4cEUUB6ir zbqmWxPn;ogapFao8f+U3hh#qA8-q)adYb{b9ap0C}vRi zYQ|E~o}vqMn5L)A MAS6VoP4V0Q2fjC~Qvd(} diff --git a/assets/content/crops/models/cabbage/crop_cabbage_decayed_mesh.res b/assets/content/crops/models/cabbage/crop_cabbage_decayed_mesh.res index 5bd0756204ee132dac2b196a6a081f189c868bfb..38704f3cddb915428552623992ff808e5050e1eb 100644 GIT binary patch delta 2721 zcma)8eNa@_6+aI}WLa2Xfn64aMIb2cj1o`~c^9GrDkc$BK#;DmEX%^el3g$j<7ACS zG5Ye*ne->I%(TpYuEH3SbUn)WT>^ds%z{PldHvI zZnIZAO%Ai!-sZA7nmvuuS5iU*0&6VIt)^y&v#Hu{vNVhETKd87k*AIL7lk3L&1EsQ zo6L4wi^*lKwp%C|&L26ZqUs!*OpZ+!r_)wD8RhHX>cD=t*y?JvG@EU9Q)LL&dH#S>bE(#z% z9N6VI8pIu{*?s|PP%M8(HN)?79sf|3AZ_LyQIY=BaE6hRzJ#k=a<<5MS2rEgwBDf782xH-{vvOWY?1Tk7S(FuzMO=OG*C8C&1Y>4W3c zFE7b29o)eljC~`&y+_Ah=qP6u$xU)}@N4py-EFMm)*0E>G{RG3lhvxDJ6O=DmfhU9 zjq$6oNgkah%g?Q%nWQ3r1p}xUx&&4U1p(K9g}oNmT8aU#AsuWTtP*GyS}7QoP{oRh z#y4we9b%(_Ld7cD0A+w)hp1BQC?!2GkV@Uk5ye7M8JuOL1qPz8O0mj-fjGJxSPr|G zri06YYM`3d!&eSm4;=;_fgK^RG*A`LWk4--B)Ed2pd*15_l_!V~{rPBtgrYfu&D#Th2%m)kG3@e{jK&^llb^$yqXeE@HYGJJe3bjhnMNmc1 zwb)fn7MyGW=L2&TYawtU$?z`#TS#^jgHZ=F6)04OqO+jt$OU6v4V4XDk3$*Rls{(!Gs=aw(NkEt)Sz$!IG6IE8z_DWAdebJa3iifS_a)nOK~;Q zGF~3BaQa*Ok{Cano8b;XMJAgl04y3R02NayO%$k9O9fjrOAx$)s8$FrHBzquhAPzy z1&b1h+G~MYM2m_})^Du{cqq9Z`j=&vAL2K1Zgv=~&;!Our#xkU;^ zR#P9RDibOTX%eZ*28#4#A{nVlOb+Uvqtqe?^JAg&}YFB zto+b=H|ei>uZV~B3^)B8>>>*Fb<@w?>Zj*uiV;`oi2`H4SqLU}4$=I#{Z%$85z)cpKx$31RJ(XW2G?YeeiVj}n1!`|mci~cjm zw&%d|_qRTb)3|bqELG={3ahrbHlM6W7XJ0S>W$lXKa3FZSKaqc z_GCw;ykXtk5x8g|@j(lpn5*~1rw#^avStUfhWUN0^XRxdqw6A9J(-{pdiS$^?AnYk z?Bxmz+^0u z0_Dbdecs>KRO07uz%ot#SYQ>_)LW=ZdDGNll-J=+Vg*~2QE$Z%uZO1rmYCL7EIZIn fO=RVrPsPpIfu@S~ce{A=w2 zm0!z`=@QhPD^@l&(KV4ItGZ(ORb7(Q`J&z;E$3GK<qYsb%A+a|Af8Ujzd z-j}~BH?noB3~Y0`g-zM$W<1CEAl7Xv)JV~e#d_LxXbU6OW1akhqa$5&A)AJ zU^C1`%(s5fe`nJJ><_1NS=0RTz{>7y_Tu^ra^2{Ifo12D*@Vk-xta z9=P&|j=78uHvD8}fOi^F`GbZjzJD8Hqz63S-u`7Ra(|@ilI(cwwfw`-eNSAH-|t?* zs&Ac?TRSexPwuK>)oC5F#ju4hw53(7-LZk)9lRm$-5kfX`!+D$Kr|cLwvP3T{?mWi z8qq(=_j&(Iql*Fqu08UcN!@<_&?zesZdL(0ohcb zQ2C0^h029)z*+Uwh$}aO-M~yGlYuhLz&ryt(hM&ZBWXhF1PWEC=mMxFYDQK76l$8H zr$aSU3$p1zp&n9n5mXU$3ocqrt;(Nk1s78ZbSwP^Q9^ABw}DHj6uOPy0<0q9!sR65FlPA~+N*Q5Y~3s0NR9To_n% zpB6J(rQuEz+&N)1?am*_IB(tTR=P`J`ZqQ8uoHI$*IqLHGoNOX?Sq38k8K~V_N zDWWgNx?rsSV%~(ZTYy%jbF5&LABErVb)h6K?28-4bYYB@JZHSLStx2QbQUmADQ6zm zI#DpEQZ^@Q!VscT1wYqCRHO)*sKPX?7iG>w6a&YqFt+EJRO-OimtvP^0>wUyJ%0rI z86vh9Klq%9e-t-KTJBSsOQpEC4Kb|hm2>j(S^7Yb5Ai=*(sV&y#4`*T6~SH>?03N? z8SH(*{upeYZHpq=%|jRDBlVGtUrjRWdsg+ya|XBOJ>JnL^PLv6&tq*+ai>wQ3o;)5 zuY?R;^SB8bRhPKNmJ#<0=BEoXKi^v0ur^}Z`JKjJpV~Fj?JhIk$^7UW-kWY#cicRe zx+J}4fNw~5%qdy8=F!!?)oGu4M-I-&zG5;ynm?;?;ptT0#=P!>@hKVq=h?6Nmk-SP zHobN8_R<9#TO5L4e`+-Gw=1qk-@A9OVEv}i7{R{SUv*0nyyBF4?XiNg-7Q~6eD?U& z>HGtyLv1e9gm2k>y^`N@IwDr@(o8*`a(7u*w=Xw#@=MM9{`<`8p{;u+PqhqteZ}|n zhZ%S88#w zCzkKbQTw`FdnN94>q9y#Px5+q8t=-C;Lp2bbRXKU%a~(@hljY$Z3|P^y(4npd+w1i z$;#iBZC(q#N_)`ue**8Nebfcq5AIgH?*R4CK{^0~?4d(=mHrIu1t-#9=rFxTep67`hds4$ElzEzySCJIVg!v(wmeFJOxforxf}-rP66|EWHIUj>X&e z7M-E9bdDxdI!&VUbb-?N3;0eirmtxbwps)JhQ6imfH%NHbQ7jJMBjsdpkY|(4|EIs zBi*Jt;2m%+jnIFAcfq6d6Ab)eTEv$Ylt``oNI`adGbKogl1+lgNe*C=WS5eq6lp27 z^NEFlP+@Ak&y>mU7T(_&g`134ZdI6wu#gz!W}sOy5i`ugj2#>|5$r`Gb}3PLe!)q| zlCTSQL<%0?4zz>Q5Gi8M(-YH!{o^rsh#8?m2%qj8XYsGt{{U=8f(QTr diff --git a/assets/content/crops/models/cabbage/crop_cabbage_growing_mesh.res b/assets/content/crops/models/cabbage/crop_cabbage_growing_mesh.res index 5a35a03d3ada15fcdd524eab0045b3274f726235..3ac7ff3a84c01e512e879986782d85f07f1be40a 100644 GIT binary patch delta 2630 zcmaJ@du&r>6hF6X*XO!Ewsv$~w?TO)Fy1&e>3D9u227C2qZ{2Ft#m84+wcKiL`~Ef z7~T+3Kom4UOkjvc9)myxf)5^x3802Vl!QMB@CN}k0q5`BZ!?`F_RIJCopbKF-{XAW zIk$gL_^i~qux8;@>iOxxhAqxT((7AR?bTbMsTop}uOXJIUm2IfsWoz>HC~?#CnAw} zYbus#KD=7GArDDT3h0=W;xsvjYU>B%c&F@Nj+!YtGj7c6PEru zqYdO&4_Y#H#ZL8WOL6`>ye*+y&?}P3`j_U)sVHSYQ`GyGhQ`>2aoKmWi5@B4-Q5b& z{*gpyhY~He)VP0yKJY<}`!RTH7tt=*4_zku^zR6Lmg;41!I;LZ3EbVJu>RSndo|84%i6H#1jkULdpea z0X=vx3z$Q0XhyO@vO&&)?1E$@6WD`iURb?g6FFfqA$CsEp=Xdzp=<~Q)B)|_Y|7Kz zoM1bSoh=T?F7$pF)&+FnNLkAR+sO>wj)|D_VKD<8@a#uc$bM)xNN&g;DgYM1=D~uP z7f5*QhbW_a3(Vz( z*w88T^azVBitRobZH}i|i?g|B>tb^{gutnVp*L=3%4(S1*?Z*T__>yx{<%}zP#y0F6YJ2-S`t{mycM=eu<)W3 zsn0FqY57K3fmXOk+JR&OGqi=+@Ql|l?u-rhjwm+$o;G0#&xbd7LLQ#*RE$n|OM+$u zW&(L!9>qu-Y;a>&{;gB*XHSw8b)=&qBvSQ=U8L$29QLJ~N^l@_A+#=bhV;`&!yDpObvGa_`@;xDu^@FFXdz>$-16-%n+pZ3i zNcqZZ>UMX#N#uFxiaI=Jh_ZZUSLcDX+20?Xq3e8gPRW6NvFvv5vW=g99NV_Jprz{b zx$QqhcU>)rUfR8H`Iz>$=%!;?RW%2abArcDR;|5xy5+qK-NQbJm2dv_ZCgj6eROo< zmtF7d{Hj{saprdItZzqz{yO$<)wbi6vqsK*zw`Rc)QOehZ;q`$?;O~+x?=zC*irN5 z()LZ!hsP(sss55vrsn6?sY>n=y?ik=OTC&~sqgsJA(ecTpOIfqc$jP6N>ox{2jf__AqSh!?p=UtgC-`%GB-Npt{t{ zyhN`V?|UnSFez{SIJ;J4?6{YCxJW+SKtg@+QGXghLEu2}AR3ITHi(9Rhte?et9SCe zN&&KS6qV3u8bf1g9B$@#nm`ljDWCzIiJIXA>cLz=Oh7ldlqMlZN~sK7PEVs|meXW# zh$?6ba4L8jO{W>ancy6%q+(zdcoxm3IW!juI8UK!nokRWS>T0KL(c#`;6=2Uo&_!e z*V1#e6u1oRrRB5&7zWo-J*}h&HK63k)JUs<0dSOJ^gM7iI8IH}3`~Gsw1!>)Cc!Cc zp;j`q(ONP-Q3*vnxomq;-#DsyS|PRp+2+B7Htm~|9&H^W?nmtXh;u%wv=5C-Hy8N= zGzqc;Sb%5-5KlcK9O#K{rlJMf33QXAB2!BucQ|9f7 z#{X49-e)Enk8Z+PTwBeMcoaKY7NTiTkLCM^Y{0U6%i%`Ie4F_$OX$7-ZurmRKZcqV AZvX%Q delta 2322 zcmZ`*S!|S56#ix@vv$^YX4+0?1{}(!UD$;JQ?`~0w6ua91zIYF7L=uIzTha)M2UgI zA0iTp3mT~=SU>|U#b5-37?#F__#g)Gfd^tWF&HJ__?`c@u}JLXe&4z4IrrRi&fkxw z{5{EAQ(H3&{eNb%d5?FoVauM?A8YxB#uJAOKN?PaV)`mWJ83(q-LZEV&)BtYN7&jl zZo{e)+>p*N<2|?blVhl1-Ck#oVWXDoT$$=90?v;DT3(sp{>2R}vDf;)PXYH+>2#WW zz7Qz82Fy%NaNqqEICd3ypZ(!?YyA&6zpoc~m;3LhN{=)|#Jsk8*(d!&H-U8e4ZVNr zN@nx#)OA1gYQ3yV6uX*Bicy7e$ENgLtWpD)u2A8^sXd-fS-7J7-lRcaZax_Rb!_E;ijAXDGffU>n3`7uJWH&E-DhvCl?5z0Ysjj$i39HAT~#<;>nDMoY3~-KgG}DTN|>_4bVHXBj-O|D{Ma}sTA_I|G_4`-xw*ZVkZqQC6A zCrn%{2AcYPsQjazDvL8t-AnR#@{ofcUJ|JN>Mi|34f=&_I$Eh3gN#xSE9Ruc9ydGOqwWaYPoiNCtvnz#RSMP<|FL}gL=+dbFIH=X&QrEB*)Ez@=n zdo9s9rEOPpq-|`oW(<^?w_orM*QN&=%zvDo@w#>>P^aAsRA_U9HTK)lzV>*yuRR&p zjtAp)eeE)kjGx+36XCk`hUURshCEdju}j_ z=}3^vFcY(gv&nNX7v;nXayI6nlK2#PJ{Djhi+={Hu?RJ&CECbOV=yZLC*uz$u6QZweWU1OxrvpT(*kVP1x`iDNy@k|cd6_(VK991OvX?I+ zMb1la`sh#j==l15>rUy8&gX#C<9wpjU>D^m4HlDK0}r74e<*z^&k>{NW0bQfOOccB zmdO7ta2}38H$<7B%uyzYIVn*h3gxZ+{fC+LgVm81%I1DQh);t2$=xLmgSx{1FK`(& t%%Yb#@uQtT8+VFwrO$;7?PfSUvXv$dRJqNRLu~w{(zC33{Ve|o{R6-Bqn-c& diff --git a/assets/content/crops/models/cabbage/crop_cabbage_grown_mesh.res b/assets/content/crops/models/cabbage/crop_cabbage_grown_mesh.res index e96959b3ce78ad38e76b1cd093a7cffe1087184a..a3f5db40252d4b5075ad6a8cf0220501fc4e57f4 100644 GIT binary patch delta 3847 zcmd5By zhix=s7cH@rr-QNDNxEJe=Xf^j4n=K|oU$3cU zgT-hwSX){w8~V)F9!D2D#^QppvDwtqZ|Jewx{VftsYh&YrN6H`B(K9hWm;_8&}T9X z7+NgmUPE7t(PE-NEdFRg+0|yxO=dxyNMa?=ZJ?^_cql zNKJgqZ@21%KeuY)Rq6mxB!5=ptNL9Se_0d9uH_GfhWL2Fhn;_^X|?Q`h>-tu|020y z-v#HJfx&X!t_f+REWj1^{v3I5&04vA`>->jDNY{TzfMkX9Fvk#eC1c=O)?y8RqYOy z7u=gGuQ{TYI}KX-+*1do7mQl@DX*Q<;rSnq^p5+C?im=CDo^jo+tfWQ@n6R19Pjye zF#CI(4oKUR_42|~^{%9&*GYce)8!OfwQF;~US76tlU&qP=2{)IM$Wk!{+pneWhkKlR3M5HrhjFDVxPNc{P=_@7 z%H~7PcKb7XZb{gmLCZ$wu|>I!TXjrmC53p?#4G|pQ@MlT>7K)aKwz! z1jk=Sk7bv*gkMW+xAV!dJg3mFUnq0!h^%l$;G5*ML1$*$7H0tdhMU#Zt_Sv2yJq9N zKP-IP=^LtdRl@&wr%PR$k^Rm+@c;Zkz3Yid|2%1SR9^Hy&dLvX{2#nfChvluNcj1< z@NJ1aelDIamC57hg@Jm8uA*}C#`FRbSVa}k<9s$f--Kd_oxv^&&{>M$7hp82{xnby&j znDc-s;AComUI*O(Y@k$F8Q>IZgl>Rt1U6DStW0nQ8K4`X4L}2>!7@-bIFp*73}l4W z1Qco^bS7oF?PgfbeC4c#fq9fmiz%O4G4uHLSuytI*ddcdCR$D_pxa<&0fj1XYdusO zwZqZ_g<9g)g;4F(0jm%w)Ka%z2DJ>j13p)fnR38pj1^P_ZKe{;BI{|vva#R>1!3?MZP9{~PP^5}^QZ<<* zC1Dyo(YTW&(iVWB#!f$QAcn@R7^+hMrdSEWnuez1goX!(#4yHFLmtXZ@g!2DEe$D3 zaVI1dX-b361ZKDskcM!IBxUhSA?bF69SO+6nuI9=pM|i>m?GGEgt7or1h~*0P7%mL z?3a+99CwOxJb^4iY)Y_Jj3FXe?2gw;a2ahyY`jE(@VgdM1WSWi$e#>NWp@5ZzJhMe@X^4!wWA?J~Af?OwV9pj^6@ALg(x{QsehBS6`WbEkArK#0&YK5#pCDm`q zmFEtJ%3K?+ZvqpWT{Kgd4_44>;M*`ts5ev}`Jvi=-O`S9jLQkAEyYgLCNULL8-_;)pU zYMq{1zqvMYuEP{rsVUy@=^dr!2hN`PVZ1!I?#;5#9vhP19Eo}NT^UtzmgG_xT!VZmL? zi{7|(dz|2Xx4GhOzWq|Lcz(x2n|5w2STa|!6+U~Db^L>%lW#wXVwI#)D_>vZ4M=n&=zH_u!;g-kmX?m-4dH0E@zpVcH z$W5E2p+MuOCGA_%2KB{5i-WH|xz|>_D|=R#;2#zqZWZf%{w&+a_9clTGCrvd@du1Y zlB+$Ux+|tFVdG<6CjWWIQ>U%>sr@`Ue^JKG-?TovaB=Y4cOGBI&m`*{SENL$r&qMZ z>AhWva{r-7{Z4ffpOF>CYqE6S1vMumep}|l>R;sP^tzlZzCANMR%r1+9NL$2T=G1V z73O<0WBF}apDf)!7N$QOe@q%_jBxY%;ShaCn^qRJUmi`lmilbh~ zGdU~OVJhk&EA`TP)ZAXOf%~W*eYrM2B+-Yip#jumAKK!+v#ujMD)n`AJy_gUH%#7E zygdJj*$MP4Jx6=#d2#@w!7tE@^b#QJOGZNSo$sSRd6W1Mq$7Z z@EDEL1kItj6i2VqL5kw-QlEVVeT;jef=;>{p-;f4=u`R(cp6+pXXq^ObMP1RS2_p$ z68shJoAdNFeM8>@OTia#Gk*uX2wsaO=6h6u<(R0T=|H&WzMd)7cF0RitJ0=&WY4p8#jEnJk!vuuxzaxR!J* zoYnH(a=P7w&LojpD2XKlJHaXJN;VIe3T~$~mJZBdX)Kdvv20)tcs^UeI%pwV#LU3O z;9S;4-IUAn!1+vKGRtSHNMd?cMb)Hd1>i!qgtY>ff|s#MT)4};*>YCN>-9^r|G7h% z>`jzD&{~wR6O)#)}oQ=c&sFV6G-Ge2^`Ja3i|9t$jIdFUxJS) zMb65QiBe>>47vg+8r@Z3(ZC86E$wP>6;S*^t1;IA*H8_xhH6O!x)!4bjcYAtJ(5rh z6!~qyScm3Qw50}WS^)ua_nXaNqdW1R9YDEzwh4w(XECt delta 3585 zcmbuC2~@X-O!hq}`vhOG&?;AEnRtbxWvKnL&Fn}m7HDl9g+a$*2Bd1og zoi;I*m>4@r6k(=n6Cl=8Y^_;pYS5UdaY>rQs4>R=zbBK@#h&DJ-nswZz2E!ZyvMzB z?z=p?k)8Vqb1g0@&ZN?$Lg?+*zd4kTyos4F*%BZ zPTuy(&B;wGX+#ErnqBVVv{L|EwoU8F+J%?4&alU7yK+3~gTA&woBpNMuKe>oN0nD= zUHLI*H@;x!kkXf@HEUjQ=hL1@;iV_+xK~X8?>=0?W2y#}o;AHn(dDf(yIOk{kG}=+ z?$SlPVN0(mG~AZI!Mivfa(&N`7k_(4GEX~n)3g%zpn;LTfstP*9XVR_gFA+dx3#Uz z;MTb>^+2Q2e{j{X$-eKTvS6}H|ADrT`g_t8rF7$O6k~0^IdtSf#i4aP5AP^3HyB>- zZ^QoanqgDS+Cm<*-idFz)@`cVmc!-#)@PTQ?(-|F+4ici7Z} zr+sxzIVX3$xd=~t>vFEp`+5p*U#*e5yv+=@R6uqxYp6YFONHWiV(>UgHL1w5;=el@T3yXJ5VvAVse6(2r*%+orV_R(1?hM zZ!LtimWtG`Xcar&0>dpqW$$OBMUw{0w@kAx;V{Aw8wTuSXOGm0pJGr@^bI21IF4 z>CIOCEO-snh$ssxy*a9%4KEvhBfc}8nkW%$!jVpy@SA8BER&Y1TpA81lX4L(r5so; zHLGj}b15HwGv(oErhH+TG_7g#+?N$UB=m;NF;c04SwS^w$?hg!gW}oZxLaHeyt{?4 z6vYwOII4w^rP1ObT<-unW8DF&MOl2^lbA-7x<3;afiy-UwNYR=5*`VaiI0TELSs>` zIA}a}$dpHkV2>CB5{zUgVoia`6eq&;@Y4__s_9NsQ=F)#CJkxKzt22B z`}8t#T=!XN7Mfb}L&<#2U%hxE8sEm0MZERPAU@jMl*{AYWD}&8urB`TEL$Frrg`Co z3jShO053x`)vrt8!M*N$Y~vLzo;vN=rxZ1wI%APn1&jTmZBppGgH!*X{wPwtV-2GX zO6^ZSupM!KH1=1}sC!opE3b_<^S!nCe6;cQ?`r!fwRp6dyK07&%Fza1^6WAt8jU@0 zy_1+S-Y4i@&3R1Y6@4L|qSHsG`m+rNJP06*5}_uhF+yyBC`a+{vIdPM|>K3n5a z)425Yjk*b*Yv&Fg@%zSOcE_#k36)VHS08?0@btLw1PdQ~rfd7kw2a_skI%|J^mB87 z!Cp7-uZn}vI)&v1KZ z)7gqoeN&TTH(amVIQ>H0ncXMK<@%|e!wY5H@Va$HvtND4%IBLsmpDb9jk0gInP(GK z8F-}jM2UsQ{0MJ5yC-Mr^shYUBJRXbvPvsECx+vbM1Op@*b;9YWNn_xL#|KJXIY2x z&S7u;cDqnckA~}AuKY=n>)T&ED>ldbh&{>n;>l!tCtYGZm){49y$Kg5@4M=wKOT5S zk!-7XAd=yz5rgNPv{c#GMGbG=qmJ6@H6^5eGdHs{1PM0HTsIK(+y|=coT!r z*U($w{TL*^p+$6?zJ*qRcko9sc84^KSS?vGYp4ygVz!0Mj@dI?<^Vb}C$^Zh%$e0d z$ARNnHRhS|%mpkbSGEwZwh3$=bRwI;+}I@M4)p-%la6_^`QnfI7()xS(p1(+p)3r# z1Po^pED{<8E~RJ|1C3?TERMyq1ZX0d#HO)kn$D70J#+?`!WuA>q_CM_DpMF|sVtWi zrf0=eLVA`4rn3xI1S=MY8%MwO}nRR`q^R{uCCY268@>wU8>ax&%XAJ*-*P7Eo5L8Of027*T6&=aP=5 c+7{9w(7@zp>{Qc<*m4fjjq`V7j{L9hA4m!}5C8xG diff --git a/assets/content/crops/models/crops.glb.import b/assets/content/crops/models/crops.glb.import index e6e2249..9d51787 100644 --- a/assets/content/crops/models/crops.glb.import +++ b/assets/content/crops/models/crops.glb.import @@ -15,9 +15,11 @@ dest_files=["res://.godot/imported/crops.glb-3428bdf7f963797caab05b9543c2298e.sc nodes/root_type="" nodes/root_name="" +nodes/root_script=null nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true @@ -32,6 +34,9 @@ animation/trimming=false animation/remove_immutable_tracks=true animation/import_rest_as_RESET=false import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" _subresources={ "materials": { "@MATERIAL:0": { @@ -55,7 +60,8 @@ _subresources={ "lods/normal_merge_angle": 60.0, "lods/normal_split_angle": 25.0, "save_to_file/enabled": true, -"save_to_file/path": "res://assets/content/crops/models/beans/crop_beans_decayed_mesh.res" +"save_to_file/fallback_path": "res://assets/content/crops/models/beans/crop_beans_decayed_mesh.res", +"save_to_file/path": "uid://bg873106r6ixn" }, "crops_beans_growing": { "generate/lightmap_uv": 0, @@ -64,7 +70,8 @@ _subresources={ "lods/normal_merge_angle": 60.0, "lods/normal_split_angle": 25.0, "save_to_file/enabled": true, -"save_to_file/path": "res://assets/content/crops/models/beans/crop_beans_growing_mesh.res" +"save_to_file/fallback_path": "res://assets/content/crops/models/beans/crop_beans_growing_mesh.res", +"save_to_file/path": "uid://b0jngyu7u6e5l" }, "crops_beans_grown": { "generate/lightmap_uv": 0, @@ -73,7 +80,8 @@ _subresources={ "lods/normal_merge_angle": 60.0, "lods/normal_split_angle": 25.0, "save_to_file/enabled": true, -"save_to_file/path": "res://assets/content/crops/models/beans/crop_beans_grown_mesh.res" +"save_to_file/fallback_path": "res://assets/content/crops/models/beans/crop_beans_grown_mesh.res", +"save_to_file/path": "uid://t3pxin8sr1x0" }, "crops_beans_planted": { "generate/lightmap_uv": 0, @@ -82,7 +90,8 @@ _subresources={ "lods/normal_merge_angle": 60.0, "lods/normal_split_angle": 25.0, "save_to_file/enabled": true, -"save_to_file/path": "res://assets/content/crops/models/beans/crop_beans_planted_mesh.res" +"save_to_file/fallback_path": "res://assets/content/crops/models/beans/crop_beans_planted_mesh.res", +"save_to_file/path": "uid://cwrwhwvri4nd7" }, "crops_cabbage_decayed": { "generate/lightmap_uv": 0, @@ -91,7 +100,8 @@ _subresources={ "lods/normal_merge_angle": 60.0, "lods/normal_split_angle": 25.0, "save_to_file/enabled": true, -"save_to_file/path": "res://assets/content/crops/models/cabbage/crop_cabbage_decayed_mesh.res" +"save_to_file/fallback_path": "res://assets/content/crops/models/cabbage/crop_cabbage_decayed_mesh.res", +"save_to_file/path": "uid://brcnvfrcto6ht" }, "crops_cabbage_growing": { "generate/lightmap_uv": 0, @@ -100,7 +110,8 @@ _subresources={ "lods/normal_merge_angle": 60.0, "lods/normal_split_angle": 25.0, "save_to_file/enabled": true, -"save_to_file/path": "res://assets/content/crops/models/cabbage/crop_cabbage_growing_mesh.res" +"save_to_file/fallback_path": "res://assets/content/crops/models/cabbage/crop_cabbage_growing_mesh.res", +"save_to_file/path": "uid://bxmojc1f18kr5" }, "crops_cabbage_grown": { "generate/lightmap_uv": 0, @@ -109,7 +120,8 @@ _subresources={ "lods/normal_merge_angle": 60.0, "lods/normal_split_angle": 25.0, "save_to_file/enabled": true, -"save_to_file/path": "res://assets/content/crops/models/cabbage/crop_cabbage_grown_mesh.res" +"save_to_file/fallback_path": "res://assets/content/crops/models/cabbage/crop_cabbage_grown_mesh.res", +"save_to_file/path": "uid://dg4il6g1tffb7" }, "crops_sapling": { "generate/lightmap_uv": 0, @@ -118,7 +130,8 @@ _subresources={ "lods/normal_merge_angle": 60.0, "lods/normal_split_angle": 25.0, "save_to_file/enabled": true, -"save_to_file/path": "res://assets/content/crops/models/sapling/crop_sapling_mesh.res" +"save_to_file/fallback_path": "res://assets/content/crops/models/sapling/crop_sapling_mesh.res", +"save_to_file/path": "uid://qdu57h0ophf0" }, "crops_sunflower_decayed": { "generate/lightmap_uv": 0, @@ -127,7 +140,8 @@ _subresources={ "lods/normal_merge_angle": 60.0, "lods/normal_split_angle": 25.0, "save_to_file/enabled": true, -"save_to_file/path": "res://assets/content/crops/models/sunflower/crop_sunflower_decayed_mesh.res" +"save_to_file/fallback_path": "res://assets/content/crops/models/sunflower/crop_sunflower_decayed_mesh.res", +"save_to_file/path": "uid://bjlcjg64rf51w" }, "crops_sunflower_growing": { "generate/lightmap_uv": 0, @@ -136,7 +150,8 @@ _subresources={ "lods/normal_merge_angle": 60.0, "lods/normal_split_angle": 25.0, "save_to_file/enabled": true, -"save_to_file/path": "res://assets/content/crops/models/sunflower/crop_sunflower_growing_mesh.res" +"save_to_file/fallback_path": "res://assets/content/crops/models/sunflower/crop_sunflower_growing_mesh.res", +"save_to_file/path": "uid://bepob0nxulltv" }, "crops_sunflower_grown": { "generate/lightmap_uv": 0, @@ -145,7 +160,8 @@ _subresources={ "lods/normal_merge_angle": 60.0, "lods/normal_split_angle": 25.0, "save_to_file/enabled": true, -"save_to_file/path": "res://assets/content/crops/models/sunflower/crop_sunflower_grown_mesh.res" +"save_to_file/fallback_path": "res://assets/content/crops/models/sunflower/crop_sunflower_grown_mesh.res", +"save_to_file/path": "uid://bxitj73jnhhln" } } } diff --git a/assets/content/crops/models/sapling/crop_sapling_mesh.res b/assets/content/crops/models/sapling/crop_sapling_mesh.res index eee014f8c55b11c2f6cd4fe7412f21699cd87447..ea000f77c9ed988ecca322b4b034d45038f8f5d8 100644 GIT binary patch delta 2121 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 delta 6394 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 diff --git a/assets/content/crops/models/sunflower/crop_sunflower_grown_mesh.res b/assets/content/crops/models/sunflower/crop_sunflower_grown_mesh.res index 05d6374664b0acd1e8b5963e2b5e20cadd0e49d2..a227ed7c6502c30c91d6d470f66e6a6e2088f26c 100644 GIT binary patch delta 7306 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 H`|*DOjok7c delta 6858 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 diff --git a/assets/content/zones/campfire/campfire_zone.tscn b/assets/content/zones/campfire/campfire_zone.tscn index 72967df..e2ddad0 100644 --- a/assets/content/zones/campfire/campfire_zone.tscn +++ b/assets/content/zones/campfire/campfire_zone.tscn @@ -84,7 +84,6 @@ albedo_color = Color(1, 0.0509804, 1, 0.501961) [sub_resource type="Resource" id="Resource_usxt2"] script = ExtResource("18_r7x46") -target_pos = Vector3(0, 0, 0) metadata/_custom_type_script = "uid://xr4uc6y6sb6p" [sub_resource type="BoxShape3D" id="BoxShape3D_b700l"] @@ -95,7 +94,6 @@ size = Vector3(15, 2, 1) [sub_resource type="Resource" id="Resource_mytsu"] script = ExtResource("18_r7x46") -target_pos = Vector3(0, 0, 0) metadata/_custom_type_script = "uid://xr4uc6y6sb6p" [node name="MainZone" type="Node3D"] @@ -2742,7 +2740,7 @@ height_mappings = { 3128: 6.0, 3129: 8.0, 3130: 8.0, -3143: -0.72369, +3143: -0.7236900000000001, 3144: -0.987349, 3145: -2.6, 3146: -2.6, @@ -5466,7 +5464,7 @@ height_mappings = { 8034: 0.532631, 8035: 0.65024, 8036: 0.5, -8037: 0.632299, +8037: 0.6322990000000001, 8038: 0.3, 8039: 0.3, 8040: 0.601833, @@ -5612,7 +5610,7 @@ height_mappings = { 8238: 0.5, 8239: 1.0, 8240: 1.0, -8241: 0.853408, +8241: 0.8534080000000001, 8242: 0.863858, 8243: 0.660095, 8244: 0.544201, diff --git a/assets/datatables/tables/characters_dt.tres b/assets/datatables/tables/characters_dt.tres index fbd7b5e..4f7dfe0 100644 --- a/assets/datatables/tables/characters_dt.tres +++ b/assets/datatables/tables/characters_dt.tres @@ -72,9 +72,6 @@ metadata/_custom_type_script = "uid://gsqbibwv6vfm" [sub_resource type="Resource" id="Resource_mscjv"] script = ExtResource("2_ynwby") -display_name = "" -dialogue_script = "" -appointments = Dictionary[int, ExtResource("1_ynwby")]({}) metadata/_custom_type_script = "uid://gsqbibwv6vfm" [resource] diff --git a/assets/datatables/tables/crops_dt.tres b/assets/datatables/tables/crops_dt.tres index 964bc30..d21e4fa 100644 --- a/assets/datatables/tables/crops_dt.tres +++ b/assets/datatables/tables/crops_dt.tres @@ -21,7 +21,6 @@ point_count = 5 [sub_resource type="Resource" id="Resource_86ah0"] script = ExtResource("1_kus3k") -attribute = 0 change = 0.015 requirement = SubResource("Curve_humno") @@ -32,7 +31,6 @@ point_count = 5 [sub_resource type="Resource" id="Resource_asfnx"] script = ExtResource("1_kus3k") attribute = 1 -change = 0.0 requirement = SubResource("Curve_5pv46") [sub_resource type="Resource" id="Resource_cwhgx"] @@ -60,7 +58,6 @@ point_count = 6 [sub_resource type="Resource" id="Resource_5ouad"] script = ExtResource("1_kus3k") -attribute = 0 change = -0.02 requirement = SubResource("Curve_u1hvp") @@ -71,7 +68,6 @@ point_count = 5 [sub_resource type="Resource" id="Resource_lijbi"] script = ExtResource("1_kus3k") attribute = 1 -change = 0.0 requirement = SubResource("Curve_638ju") [sub_resource type="Resource" id="Resource_0ym1e"] @@ -103,7 +99,6 @@ point_count = 4 [sub_resource type="Resource" id="Resource_gvguh"] script = ExtResource("1_kus3k") -attribute = 0 change = -0.01 requirement = SubResource("Curve_igrab") @@ -146,7 +141,6 @@ point_count = 5 [sub_resource type="Resource" id="Resource_lbs68"] script = ExtResource("1_kus3k") -attribute = 0 change = -0.015 requirement = SubResource("Curve_gnk15") @@ -157,7 +151,6 @@ point_count = 5 [sub_resource type="Resource" id="Resource_wv1b4"] script = ExtResource("1_kus3k") attribute = 1 -change = 0.0 requirement = SubResource("Curve_arkny") [sub_resource type="Resource" id="Resource_d7ttb"] @@ -166,7 +159,6 @@ crop_id = "organic_waste" name = "Weed" planting_radius = 1.0 effect_radius = 2.0 -growth_required = 0 attributes = Array[ExtResource("1_kus3k")]([SubResource("Resource_gu36k"), SubResource("Resource_lbs68"), SubResource("Resource_wv1b4")]) mesh_planted = "res://assets/content/crops/models/sapling/crop_sapling_mesh.res" mesh_growing = "res://assets/content/crops/models/sapling/crop_sapling_mesh.res" @@ -175,16 +167,6 @@ mesh_decayed = "res://assets/content/crops/models/sapling/crop_sapling_mesh.res" [sub_resource type="Resource" id="Resource_77sp7"] script = ExtResource("2_8ljxm") -crop_id = "" -name = "" -planting_radius = 0.0 -effect_radius = 0.0 -growth_required = 0 -attributes = Array[ExtResource("1_kus3k")]([]) -mesh_planted = "" -mesh_growing = "" -mesh_grown = "" -mesh_decayed = "" [resource] script = ExtResource("4_knr68") diff --git a/assets/datatables/tables/items_dt.tres b/assets/datatables/tables/items_dt.tres index e9d7ce9..8095d0c 100644 --- a/assets/datatables/tables/items_dt.tres +++ b/assets/datatables/tables/items_dt.tres @@ -42,7 +42,6 @@ tooltip = "Spreads Nutrients in the soil" script = ExtResource("1_vtgnq") name = "Organic Waste" icon_path = "res://assets/content/icons/organic_waste.svg" -action_type = 0 tooltip = "Add to the compost bin" [sub_resource type="Resource" id="Resource_uh3ae"] @@ -56,7 +55,6 @@ tooltip = "Scan soil attributes" script = ExtResource("1_vtgnq") name = "Sunflower" icon_path = "res://assets/content/icons/sunflower_crop.svg" -action_type = 0 tooltip = "Add to the compost bin" [sub_resource type="Resource" id="Resource_infmi"] @@ -75,10 +73,6 @@ tooltip = "Water the soil" [sub_resource type="Resource" id="Resource_w8udp"] script = ExtResource("1_vtgnq") -name = "" -icon_path = "" -action_type = 0 -tooltip = "" [resource] script = ExtResource("2_j0kc7") diff --git a/assets/datatables/tables/levels_dt.tres b/assets/datatables/tables/levels_dt.tres index a0defd4..adfd08c 100644 --- a/assets/datatables/tables/levels_dt.tres +++ b/assets/datatables/tables/levels_dt.tres @@ -30,8 +30,6 @@ path = "res://assets/content/zones/peninsula/peninsula_zone.tscn" [sub_resource type="Resource" id="Resource_6hi01"] script = ExtResource("1_3bvtj") -name = "" -path = "" [resource] script = ExtResource("2_orl7c") diff --git a/assets/environment/materials/terrain.tres b/assets/environment/materials/terrain.tres index 0e991b6..01bf76c 100644 --- a/assets/environment/materials/terrain.tres +++ b/assets/environment/materials/terrain.tres @@ -16,8 +16,8 @@ fractal_gain = 0.0 [sub_resource type="NoiseTexture2D" id="NoiseTexture2D_kn7e1"] width = 1024 height = 1024 -color_ramp = SubResource("Gradient_jy6f2") noise = SubResource("FastNoiseLite_p8kcj") +color_ramp = SubResource("Gradient_jy6f2") [resource] render_priority = 0 @@ -27,4 +27,3 @@ shader_parameter/radiation_texture = SubResource("NoiseTexture2D_kn7e1") shader_parameter/soil_light_color = Color(0.31, 0.24025, 0.1426, 1) shader_parameter/soil_dark_color = Color(0.45, 0.23715, 0.063, 1) shader_parameter/radiation_color = Color(0.2408, 0.86, 0.086, 1) -shader_parameter/sun_dir = Vector3(0, 0, 0) diff --git a/project.godot b/project.godot index d53ab32..473bd75 100644 --- a/project.godot +++ b/project.godot @@ -13,7 +13,7 @@ config_version=5 config/name="Sunflower" config/version="0.1.12" run/main_scene="res://assets/common/scenes/game_world.tscn" -config/features=PackedStringArray("4.4", "Forward Plus") +config/features=PackedStringArray("4.5", "Forward Plus") config/icon="res://assets/common/icons/application_icon.svg" [autoload] From f7b61cd7235e2d035c7d13f3a0ad0c0c2fc7b1fd Mon Sep 17 00:00:00 2001 From: Jonathan Moallem Date: Tue, 16 Sep 2025 23:00:05 +1000 Subject: [PATCH 4/8] Updated log utils to use variadic arguments --- assets/common/scripts/utils.gd | 17 +++++++---------- assets/validation/dialogue_script_validation.gd | 4 +--- assets/validation/validation.gd | 7 +++---- 3 files changed, 11 insertions(+), 17 deletions(-) diff --git a/assets/common/scripts/utils.gd b/assets/common/scripts/utils.gd index b9da4af..4fcf176 100644 --- a/assets/common/scripts/utils.gd +++ b/assets/common/scripts/utils.gd @@ -2,17 +2,14 @@ class_name Utils const VERSION_CONFIG_SETTING: String = "application/config/version" -static func push_info(arg1 = "", arg2 = "", arg3 = "", arg4 = "", arg5 = "", arg6 = "", arg7 = "", arg8 = ""): - print(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) +static func log_info(category_name: String, ...args: Array): + print("LOG_INFO_" + category_name + ": " + "".join(args)) -static func log_info(category_name: String, arg1 = "", arg2 = "", arg3 = "", arg4 = "", arg5 = "", arg6 = "", arg7 = ""): - push_info("LOG_INFO_" + category_name + ": ", arg1, arg2, arg3, arg4, arg5, arg6, arg7) - -static func log_warn(category_name: String, arg1 = "", arg2 = "", arg3 = "", arg4 = "", arg5 = "", arg6 = "", arg7 = ""): - push_warning("LOG_WARN_" + category_name + ": ", arg1, arg2, arg3, arg4, arg5, arg6, arg7) - -static func log_error(category_name: String, arg1 = "", arg2 = "", arg3 = "", arg4 = "", arg5 = "", arg6 = "", arg7 = ""): - push_error("LOG_ERROR_" + category_name + ": ", arg1, arg2, arg3, arg4, arg5, arg6, arg7) +static func log_warn(category_name: String, ...args: Array): + push_warning("LOG_WARN_" + category_name + ": ", "".join(args)) + +static func log_error(category_name: String, ...args: Array): + push_error("LOG_ERROR_" + category_name + ": ", "".join(args)) static func get_version() -> String: return ProjectSettings.get_setting(VERSION_CONFIG_SETTING) diff --git a/assets/validation/dialogue_script_validation.gd b/assets/validation/dialogue_script_validation.gd index ab08c2f..5fd501e 100644 --- a/assets/validation/dialogue_script_validation.gd +++ b/assets/validation/dialogue_script_validation.gd @@ -1,7 +1,5 @@ class_name DialogueScriptValidation extends ValidationManager.Validation -const Utils = preload("res://assets/common/scripts/utils.gd") - func get_name() -> String: return "DialogueScriptValidation" @@ -9,7 +7,7 @@ func run_validations() -> bool: var result: bool = true var dialogue_scripts = find_dialogue_scripts_in_dir("res://assets") for script in dialogue_scripts: - Utils.push_info(" - Validating ", script, "...") + print(" - Validating ", script, "...") var dialogue_script: DialogueScript = DialogueScript.new(script) if not DialogueValidator.validate_script(dialogue_script): result = false diff --git a/assets/validation/validation.gd b/assets/validation/validation.gd index d412bdb..ef21cf6 100644 --- a/assets/validation/validation.gd +++ b/assets/validation/validation.gd @@ -1,19 +1,18 @@ class_name ValidationManager -const Utils = preload("res://assets/common/scripts/utils.gd") var validations = [DialogueScriptValidation] func run_all_validations() -> bool: - Utils.push_info("Running all validations...") + print("Running all validations...") var result = true for validation in validations: var v = validation.new() - Utils.push_info("- Running validation for ", v.get_name(), "...") + print("- Running validation for ", v.get_name(), "...") if not v.run_validations(): push_error(" VALIDATION FAILED") result = false if result: - Utils.push_info("All validations passed!") + print("All validations passed!") else: push_error("Some validations failed - see above for more info.") return result From e707710bb569b9d10178137653a496e5142d5208 Mon Sep 17 00:00:00 2001 From: Jonathan Moallem Date: Tue, 16 Sep 2025 23:15:53 +1000 Subject: [PATCH 5/8] Updated export settings for Godot 4.5 --- export_presets.cfg | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/export_presets.cfg b/export_presets.cfg index 461c2a4..7c5831a 100644 --- a/export_presets.cfg +++ b/export_presets.cfg @@ -9,9 +9,11 @@ custom_features="" export_filter="all_resources" include_filter="" exclude_filter="" -export_path="./build/macos/Sunflower.app" +export_path="build/macos/Sunflower.app" +patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" +seed=0 encrypt_pck=false encrypt_directory=false script_export_mode=2 @@ -32,9 +34,11 @@ application/short_version="0.0" application/version="0.0.0" application/copyright="Copyright Caps Collective" application/copyright_localized={} -application/min_macos_version="10.12" +application/min_macos_version_x86_64="10.12" +application/min_macos_version_arm64="11.00" application/export_angle=0 display/high_res=true +shader_baker/enabled=false application/additional_plist_content="" xcode/platform_build="14C18" xcode/sdk_version="13.1" @@ -70,6 +74,7 @@ codesign/entitlements/app_sandbox/files_music=0 codesign/entitlements/app_sandbox/files_movies=0 codesign/entitlements/app_sandbox/files_user_selected=0 codesign/entitlements/app_sandbox/helper_executables=[] +codesign/entitlements/additional="" codesign/custom_options=PackedStringArray() notarization/notarization=0 privacy/microphone_usage_description="" @@ -247,6 +252,7 @@ open \"{temp_dir}/{exe_name}.app\" --args {cmd_args}" ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash kill $(pgrep -x -f \"{temp_dir}/{exe_name}.app/Contents/MacOS/{exe_name} {cmd_args}\") rm -rf \"{temp_dir}\"" +application/min_macos_version="10.12" [preset.1] @@ -259,9 +265,11 @@ custom_features="" export_filter="all_resources" include_filter="" exclude_filter="" -export_path="./build/Windows/Sunflower.exe" +export_path="build/windows/Sunflower.exe" +patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" +seed=0 encrypt_pck=false encrypt_directory=false script_export_mode=2 @@ -274,6 +282,7 @@ debug/export_console_wrapper=1 binary_format/embed_pck=false texture_format/s3tc_bptc=true texture_format/etc2_astc=false +shader_baker/enabled=false binary_format/architecture="x86_64" codesign/enable=false codesign/timestamp=true @@ -328,9 +337,11 @@ custom_features="" export_filter="all_resources" include_filter="" exclude_filter="" -export_path="./build/Linux/Sunflower" +export_path="build/linux/Sunflower.x86_64" +patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" +seed=0 encrypt_pck=false encrypt_directory=false script_export_mode=2 @@ -343,6 +354,7 @@ debug/export_console_wrapper=1 binary_format/embed_pck=false texture_format/s3tc_bptc=true texture_format/etc2_astc=false +shader_baker/enabled=false binary_format/architecture="x86_64" ssh_remote_deploy/enabled=false ssh_remote_deploy/host="user@host_ip" From 43db7644969f2d0d0114120dcdf796101a5ba19d Mon Sep 17 00:00:00 2001 From: Jonathan Moallem Date: Tue, 16 Sep 2025 23:40:43 +1000 Subject: [PATCH 6/8] Added abstract decorator for all relevant classes and functions --- addons/datatable/scripts/datatable_row.gd | 1 + addons/persistent_data/scripts/metadata_section.gd | 1 + addons/persistent_data/scripts/persistent_data_file.gd | 5 +++-- .../persistent_data/scripts/persistent_data_section.gd | 1 + assets/character/scripts/character.gd | 1 + assets/character/scripts/character_action.gd | 1 + assets/common/scripts/transition_screen.gd | 9 +++++---- assets/debug/common/scripts/debug_section.gd | 1 + assets/validation/validation.gd | 9 +++++---- 9 files changed, 19 insertions(+), 10 deletions(-) diff --git a/addons/datatable/scripts/datatable_row.gd b/addons/datatable/scripts/datatable_row.gd index 7015aa4..49a8f7e 100644 --- a/addons/datatable/scripts/datatable_row.gd +++ b/addons/datatable/scripts/datatable_row.gd @@ -1,3 +1,4 @@ +@abstract class_name DatatableRow extends Resource ## Row schema definition for usage with [Datatable] resources. ## diff --git a/addons/persistent_data/scripts/metadata_section.gd b/addons/persistent_data/scripts/metadata_section.gd index 6466b12..d5f601d 100644 --- a/addons/persistent_data/scripts/metadata_section.gd +++ b/addons/persistent_data/scripts/metadata_section.gd @@ -1,3 +1,4 @@ +@abstract class_name MetadataSection extends PersistentDataSection func _init(file: PersistentDataFile): diff --git a/addons/persistent_data/scripts/persistent_data_file.gd b/addons/persistent_data/scripts/persistent_data_file.gd index 8ab0465..95666ea 100644 --- a/addons/persistent_data/scripts/persistent_data_file.gd +++ b/addons/persistent_data/scripts/persistent_data_file.gd @@ -1,3 +1,4 @@ +@abstract class_name PersistentDataFile extends Node enum DeserialisationResult { @@ -9,8 +10,8 @@ enum DeserialisationResult { var metadata_section: MetadataSection var save_sections: Dictionary = {} -func get_file_name() -> String: - return "user://persistent_data.save" +@abstract +func get_file_name() -> String func register_metadata(metadata: MetadataSection): metadata_section = metadata diff --git a/addons/persistent_data/scripts/persistent_data_section.gd b/addons/persistent_data/scripts/persistent_data_section.gd index 4210560..a60d488 100644 --- a/addons/persistent_data/scripts/persistent_data_section.gd +++ b/addons/persistent_data/scripts/persistent_data_section.gd @@ -1,3 +1,4 @@ +@abstract class_name PersistentDataSection const DeserialisationResult = PersistentDataFile.DeserialisationResult diff --git a/assets/character/scripts/character.gd b/assets/character/scripts/character.gd index a8f6b15..2bf9bc5 100644 --- a/assets/character/scripts/character.gd +++ b/assets/character/scripts/character.gd @@ -1,3 +1,4 @@ +@abstract class_name Character extends CharacterBody3D @export var character_id: StringName diff --git a/assets/character/scripts/character_action.gd b/assets/character/scripts/character_action.gd index df0905a..04df3e8 100644 --- a/assets/character/scripts/character_action.gd +++ b/assets/character/scripts/character_action.gd @@ -1,3 +1,4 @@ +@abstract class_name CharacterAction extends Resource signal started diff --git a/assets/common/scripts/transition_screen.gd b/assets/common/scripts/transition_screen.gd index 778ce33..c719ebd 100644 --- a/assets/common/scripts/transition_screen.gd +++ b/assets/common/scripts/transition_screen.gd @@ -1,3 +1,4 @@ +@abstract class_name TransitionScreen extends Control enum TransitionState { @@ -24,8 +25,8 @@ func began() -> bool: func ended() -> bool: return state == TransitionState.ENDED -func begin_transition(): - pass +@abstract +func begin_transition() -func end_transition(): - pass +@abstract +func end_transition() diff --git a/assets/debug/common/scripts/debug_section.gd b/assets/debug/common/scripts/debug_section.gd index bc039ab..c7198ab 100644 --- a/assets/debug/common/scripts/debug_section.gd +++ b/assets/debug/common/scripts/debug_section.gd @@ -1,3 +1,4 @@ +@abstract class_name DebugSection extends Control func on_opened(): diff --git a/assets/validation/validation.gd b/assets/validation/validation.gd index ef21cf6..f1c9ea6 100644 --- a/assets/validation/validation.gd +++ b/assets/validation/validation.gd @@ -17,10 +17,11 @@ func run_all_validations() -> bool: push_error("Some validations failed - see above for more info.") return result +@abstract class Validation: - func get_name() -> String: - return "Validation" + @abstract + func get_name() -> String - func run_validations() -> bool: - return true + @abstract + func run_validations() -> bool From b9ce48c0dbd56ba55e7efeceb948ee9beba555ce Mon Sep 17 00:00:00 2001 From: Jonathan Moallem Date: Tue, 16 Sep 2025 23:59:18 +1000 Subject: [PATCH 7/8] Added editor script for validations --- .../validation/dialogue_script_validation.gd | 2 +- assets/validation/validation.gd | 27 --------------- assets/validation/validations.gd | 34 +++++++++++++++++++ .../{validation.gd.uid => validations.gd.uid} | 0 scripts/run_validations.gd | 4 +-- 5 files changed, 37 insertions(+), 30 deletions(-) delete mode 100644 assets/validation/validation.gd create mode 100644 assets/validation/validations.gd rename assets/validation/{validation.gd.uid => validations.gd.uid} (100%) diff --git a/assets/validation/dialogue_script_validation.gd b/assets/validation/dialogue_script_validation.gd index 5fd501e..ba7e599 100644 --- a/assets/validation/dialogue_script_validation.gd +++ b/assets/validation/dialogue_script_validation.gd @@ -1,4 +1,4 @@ -class_name DialogueScriptValidation extends ValidationManager.Validation +class_name DialogueScriptValidation extends Validations.Validation func get_name() -> String: return "DialogueScriptValidation" diff --git a/assets/validation/validation.gd b/assets/validation/validation.gd deleted file mode 100644 index f1c9ea6..0000000 --- a/assets/validation/validation.gd +++ /dev/null @@ -1,27 +0,0 @@ -class_name ValidationManager - -var validations = [DialogueScriptValidation] - -func run_all_validations() -> bool: - print("Running all validations...") - var result = true - for validation in validations: - var v = validation.new() - print("- Running validation for ", v.get_name(), "...") - if not v.run_validations(): - push_error(" VALIDATION FAILED") - result = false - if result: - print("All validations passed!") - else: - push_error("Some validations failed - see above for more info.") - return result - -@abstract -class Validation: - - @abstract - func get_name() -> String - - @abstract - func run_validations() -> bool diff --git a/assets/validation/validations.gd b/assets/validation/validations.gd new file mode 100644 index 0000000..ed0fb27 --- /dev/null +++ b/assets/validation/validations.gd @@ -0,0 +1,34 @@ +@tool +class_name Validations extends EditorScript + +func _run(): + var manager = ValidationManager.new() + manager.run_all_validations() + +class ValidationManager: + + var validations = [DialogueScriptValidation] + + func run_all_validations() -> bool: + print("Running all validations...") + var result = true + for validation in validations: + var v = validation.new() + print("- Running validation for ", v.get_name(), "...") + if not v.run_validations(): + push_error(" VALIDATION FAILED") + result = false + if result: + print("All validations passed!") + else: + push_error("Some validations failed - see above for more info.") + return result + +@abstract +class Validation: + + @abstract + func get_name() -> String + + @abstract + func run_validations() -> bool diff --git a/assets/validation/validation.gd.uid b/assets/validation/validations.gd.uid similarity index 100% rename from assets/validation/validation.gd.uid rename to assets/validation/validations.gd.uid diff --git a/scripts/run_validations.gd b/scripts/run_validations.gd index f977d07..fc14d37 100644 --- a/scripts/run_validations.gd +++ b/scripts/run_validations.gd @@ -1,9 +1,9 @@ #!/usr/bin/env -S godot -s extends SceneTree -const ValidationManager = preload("res://assets/validation/validation.gd") +const Validations = preload("res://assets/validation/validations.gd") func _init(): - var manager = ValidationManager.new() + var manager = Validations.ValidationManager.new() var result = manager.run_all_validations() quit(0 if result else 1) From 9184555e3e0cc9c762dfd359610e096a4ada854d Mon Sep 17 00:00:00 2001 From: Jonathan Moallem Date: Wed, 17 Sep 2025 00:10:49 +1000 Subject: [PATCH 8/8] Separated out log utils into its own namespace --- .../scripts/character_action_navigate_callback.gd | 2 +- assets/actions/scripts/world_character_action.gd | 2 +- assets/common/scripts/game_manager.gd | 14 +++++++------- assets/common/scripts/game_world.gd | 14 +++++++------- assets/common/scripts/log.gd | 10 ++++++++++ assets/common/scripts/log.gd.uid | 1 + assets/common/scripts/utils.gd | 9 --------- assets/menus/scripts/main_menu_ui.gd | 2 +- assets/persistence/savegame.gd | 2 +- assets/persistence/zone_layouts.gd | 2 +- assets/zones/scripts/zone.gd | 10 +++++----- 11 files changed, 35 insertions(+), 33 deletions(-) create mode 100644 assets/common/scripts/log.gd create mode 100644 assets/common/scripts/log.gd.uid diff --git a/assets/actions/scripts/character_action_navigate_callback.gd b/assets/actions/scripts/character_action_navigate_callback.gd index 467ae04..2ef760b 100644 --- a/assets/actions/scripts/character_action_navigate_callback.gd +++ b/assets/actions/scripts/character_action_navigate_callback.gd @@ -21,4 +21,4 @@ func on_abort(): nav_to_action.abort() func on_nav_complete(): - Utils.log_warn("No callback on completed navigation") + Log.warn("No callback on completed navigation") diff --git a/assets/actions/scripts/world_character_action.gd b/assets/actions/scripts/world_character_action.gd index 232faaf..f02a022 100644 --- a/assets/actions/scripts/world_character_action.gd +++ b/assets/actions/scripts/world_character_action.gd @@ -4,7 +4,7 @@ class_name WorldCharacterAction extends Node3D func run_action(character: Character): if not character_action: - Utils.log_warn("CharacterActions", "World action, ", name, ", has undefined action") + Log.warn("CharacterActions", "World action, ", name, ", has undefined action") return if "target_pos" in character_action: diff --git a/assets/common/scripts/game_manager.gd b/assets/common/scripts/game_manager.gd index dbd778f..b46c834 100644 --- a/assets/common/scripts/game_manager.gd +++ b/assets/common/scripts/game_manager.gd @@ -30,7 +30,7 @@ var scanner_attr: SoilAttr: var game_world: GameWorld: set(world): - Utils.log_info("Initialisation", "Game world registered") + Log.info("Initialisation", "Game world registered") game_world = world func _ready(): @@ -216,7 +216,7 @@ func get_crop_health(zone_id: String, cell: Vector2i, seed_id: String) -> float: func plant_crop(seed_id: String, cell: Vector2i, zone_id: String = current_zone.zone_id): if not crops_dt.has(seed_id): - Utils.log_error("Crops", seed_id, " is an invalid item id to plant") + Log.error("Crops", seed_id, " is an invalid item id to plant") return Savegame.zones.crops[zone_id][cell] = { "seed_id": seed_id, @@ -270,13 +270,13 @@ func valid_item(item_id: String) -> bool: func get_item_details(item_id: String) -> ItemConfigRow: if not valid_item(item_id): - Utils.log_warn("Item", item_id, " is not a valid item type") + Log.warn("Item", item_id, " is not a valid item type") return null return items_dt.get_row(item_id) as ItemConfigRow func get_item_count(item_id: String): if not valid_item(item_id): - Utils.log_warn("Item", item_id, " is not a valid item type") + Log.warn("Item", item_id, " is not a valid item type") return 0 if not Savegame.player.inventory.has(item_id): return 0 @@ -287,10 +287,10 @@ func change_item_count(item_id: String, change: int): func set_item_count(item_id: String, value: int): if not valid_item(item_id): - Utils.log_warn("Item", item_id, " is not a valid item type") + Log.warn("Item", item_id, " is not a valid item type") return if value < 0: - Utils.log_warn("Item", "Cannot have fewer than 0 of any ", item_id) + Log.warn("Item", "Cannot have fewer than 0 of any ", item_id) return if get_item_count(item_id) == 0 and value > 0 and not Savegame.player.hotbar.has(item_id): @@ -300,7 +300,7 @@ func set_item_count(item_id: String, value: int): Savegame.player.hotbar.erase(item_id) hotbar_updated.emit() - Utils.log_info("Item", "Setting ", item_id, " count to ", value) + Log.info("Item", "Setting ", item_id, " count to ", value) if value == 0: Savegame.player.inventory.erase(item_id) else: diff --git a/assets/common/scripts/game_world.gd b/assets/common/scripts/game_world.gd index 69ebf79..ad01d81 100644 --- a/assets/common/scripts/game_world.gd +++ b/assets/common/scripts/game_world.gd @@ -15,16 +15,16 @@ func _ready(): load_level(entrypoint_scene, {}, entrypoint_transition_scene) func load_level(scene_path: String, args: Dictionary = {}, transition_scene_path: String = default_transition_scene): - Utils.log_info("Levels", "Began loading level at ", scene_path) + Log.info("Levels", "Began loading level at ", scene_path) var error: Error = ResourceLoader.load_threaded_request(scene_path) if error != OK: - Utils.log_error("Levels", "Failed to request load of level at ", scene_path) + Log.error("Levels", "Failed to request load of level at ", scene_path) return var transition_scene: TransitionScreen = ResourceLoader.load(transition_scene_path).instantiate() transition.add_child(transition_scene) transition_scene.begin_transition() - Utils.log_info("Levels", "Began transition \"", transition_scene.name, "\"") + Log.info("Levels", "Began transition \"", transition_scene.name, "\"") if not transition_scene.began(): await transition_scene.transition_began @@ -38,20 +38,20 @@ func load_level(scene_path: String, args: Dictionary = {}, transition_scene_path var new_scene = ResourceLoader.load_threaded_get(scene_path).instantiate() level_args = args scene.add_child(new_scene) - Utils.log_info("Levels", "Finished loading level \"", new_scene.name, "\"", " with args ", args) + Log.info("Levels", "Finished loading level \"", new_scene.name, "\"", " with args ", args) transition_scene.end_transition() - Utils.log_info("Levels", "Ended transition \"", transition_scene.name, "\"") + Log.info("Levels", "Ended transition \"", transition_scene.name, "\"") if not transition_scene.ended(): await transition_scene.transition_ended Utils.queue_free_children(transition) - Utils.log_info("Levels", "Displaying level \"", new_scene.name, "\"") + Log.info("Levels", "Displaying level \"", new_scene.name, "\"") var check_status = func(): var status = ResourceLoader.load_threaded_get_status(scene_path) match status: ResourceLoader.THREAD_LOAD_INVALID_RESOURCE, ResourceLoader.THREAD_LOAD_FAILED: - Utils.log_error("Levels", "Failed to load level at ", scene_path) + Log.error("Levels", "Failed to load level at ", scene_path) timer.stop() timer.queue_free() ResourceLoader.THREAD_LOAD_LOADED: diff --git a/assets/common/scripts/log.gd b/assets/common/scripts/log.gd new file mode 100644 index 0000000..e12d6ed --- /dev/null +++ b/assets/common/scripts/log.gd @@ -0,0 +1,10 @@ +class_name Log + +static func info(category_name: String, ...args: Array): + print("LOG_INFO_" + category_name + ": " + "".join(args)) + +static func warn(category_name: String, ...args: Array): + push_warning("LOG_WARN_" + category_name + ": ", "".join(args)) + +static func error(category_name: String, ...args: Array): + push_error("LOG_ERROR_" + category_name + ": ", "".join(args)) diff --git a/assets/common/scripts/log.gd.uid b/assets/common/scripts/log.gd.uid new file mode 100644 index 0000000..69cf2ed --- /dev/null +++ b/assets/common/scripts/log.gd.uid @@ -0,0 +1 @@ +uid://cr1v85vtdl0wj diff --git a/assets/common/scripts/utils.gd b/assets/common/scripts/utils.gd index 4fcf176..00d773d 100644 --- a/assets/common/scripts/utils.gd +++ b/assets/common/scripts/utils.gd @@ -2,15 +2,6 @@ class_name Utils const VERSION_CONFIG_SETTING: String = "application/config/version" -static func log_info(category_name: String, ...args: Array): - print("LOG_INFO_" + category_name + ": " + "".join(args)) - -static func log_warn(category_name: String, ...args: Array): - push_warning("LOG_WARN_" + category_name + ": ", "".join(args)) - -static func log_error(category_name: String, ...args: Array): - push_error("LOG_ERROR_" + category_name + ": ", "".join(args)) - static func get_version() -> String: return ProjectSettings.get_setting(VERSION_CONFIG_SETTING) diff --git a/assets/menus/scripts/main_menu_ui.gd b/assets/menus/scripts/main_menu_ui.gd index a65ccaf..b51aa8a 100644 --- a/assets/menus/scripts/main_menu_ui.gd +++ b/assets/menus/scripts/main_menu_ui.gd @@ -8,7 +8,7 @@ extends Control func _ready() -> void: Savegame.load_file() - Utils.log_info("Deserialisation", "Operation completed") + Log.info("Deserialisation", "Operation completed") if not Savegame.metadata_section.has_valid_data(): continue_btn.visible = false new_game_btn.pressed.connect(on_new_game_btn_pressed) diff --git a/assets/persistence/savegame.gd b/assets/persistence/savegame.gd index 8e971eb..dff2a56 100644 --- a/assets/persistence/savegame.gd +++ b/assets/persistence/savegame.gd @@ -17,4 +17,4 @@ const ZonesData = preload("res://assets/persistence/zones_data.gd") func save_file(): super() - Utils.log_info("Serialisation", "Saved game to disk as ", get_file_name()) + Log.info("Serialisation", "Saved game to disk as ", get_file_name()) diff --git a/assets/persistence/zone_layouts.gd b/assets/persistence/zone_layouts.gd index 26388e6..a156c9d 100644 --- a/assets/persistence/zone_layouts.gd +++ b/assets/persistence/zone_layouts.gd @@ -11,4 +11,4 @@ const ZonesData = preload("res://assets/persistence/zones_data.gd") func save_file(): super() - Utils.log_info("Serialisation", "Saved initial zones to disk as ", get_file_name()) + Log.info("Serialisation", "Saved initial zones to disk as ", get_file_name()) diff --git a/assets/zones/scripts/zone.gd b/assets/zones/scripts/zone.gd index 6f883e3..4bc7bac 100644 --- a/assets/zones/scripts/zone.gd +++ b/assets/zones/scripts/zone.gd @@ -31,7 +31,7 @@ func _ready(): var spawn_location: StringName = GameManager.game_world.level_args.get("spawn_location", "default") var spawn = find_player_spawn(spawn_location) if not spawn: - Utils.log_error("Zones", "Failed to find spawner for location ", spawn_location) + Log.error("Zones", "Failed to find spawner for location ", spawn_location) return spawn_position = spawn.global_position spawn_rotation = spawn.global_rotation @@ -90,7 +90,7 @@ func refresh_appointment_spawners(intial_check: bool = false): for row in characters_dt: var appointment: Dictionary = get_active_appointment(row.value) if appointment.is_empty(): - Utils.log_warn("Zones", "Received invalid appointment config for \"", row.key, "\"") + Log.warn("Zones", "Received invalid appointment config for \"", row.key, "\"") continue if appointment.details.zone_id == zone_id: @@ -98,7 +98,7 @@ func refresh_appointment_spawners(intial_check: bool = false): if changed_now: var traversal: ZoneTraversalTrigger = find_zone_traversal_for_exit(appointment.previous.zone_id) if not traversal: - Utils.log_warn("Zones", "Failed to find exit for zone \"", appointment.previous.zone_id, "\"") + Log.warn("Zones", "Failed to find exit for zone \"", appointment.previous.zone_id, "\"") continue run_appointent_spawner(appointment.details.spawner_id, row.key, {"override_spawn_pos": traversal.global_position}) run_appointent_spawner(appointment.details.spawner_id, row.key) @@ -108,7 +108,7 @@ func refresh_appointment_spawners(intial_check: bool = false): continue var traversal: ZoneTraversalTrigger = find_zone_traversal_for_exit(appointment.details.zone_id) if not traversal: - Utils.log_warn("Zones", "Failed to find exit for zone \"", appointment.details.zone_id, "\"") + Log.warn("Zones", "Failed to find exit for zone \"", appointment.details.zone_id, "\"") continue var action := CharacterActionNavigateTo.new() action.configure(character, {"target_pos": traversal.global_position}) @@ -137,6 +137,6 @@ func get_active_appointment(row: CharacterConfigRow) -> Dictionary: func run_appointent_spawner(spawner_id: StringName, character_id: StringName, spawn_options: Dictionary = {}): var spawner: AppointmentSpawner = find_appointment_spawner(spawner_id) if not spawner: - Utils.log_warn("Zones", "Failed to find spawner \"", spawner_id, "\"") + Log.warn("Zones", "Failed to find spawner \"", spawner_id, "\"") return spawner.run_spawn(character_id, spawn_options)