From f2de25ab0f3bfc3a5569f1b07d31d0502111eb05 Mon Sep 17 00:00:00 2001 From: Rob Kelly Date: Fri, 18 Apr 2025 18:36:19 -0600 Subject: [PATCH] Diegetic grunk gauge --- asset_dev/hud_tools/sprayer.xcf | Bin 18090 -> 32353 bytes assets/materials/grunk_jittery.material | Bin 1050 -> 1089 bytes assets/materials/gunk.material | Bin 884 -> 924 bytes assets/materials/gunk_bright.material | Bin 818 -> 859 bytes assets/materials/gunk_lowrez.material | Bin 819 -> 856 bytes assets/ui/hud/tools/gauge/gauge.png | 3 + assets/ui/hud/tools/gauge/gauge.png.import | 34 +++++++++ assets/ui/hud/tools/gauge/gauge_glass.png | 3 + .../ui/hud/tools/gauge/gauge_glass.png.import | 34 +++++++++ assets/ui/hud/tools/gauge/gauge_needle.png | 3 + .../hud/tools/gauge/gauge_needle.png.import | 34 +++++++++ src/equipment/point_spray/point_spray.tscn | 9 ++- src/equipment/wide_spray/wide_spray.tscn | 14 +++- src/ui/hud/grunk_gauge/grunk_gauge.gd | 61 ++++++++++++++++ src/ui/hud/grunk_gauge/grunk_gauge.gd.uid | 1 + src/ui/hud/grunk_gauge/grunk_gauge.tscn | 67 ++++++++++++++++++ src/ui/hud/player_hud.tscn | 31 ++------ src/world/grunk_beast/grunk_beast.tscn | 4 +- .../grunk_beast/slutch_beast/slutch.material | Bin 1053 -> 1090 bytes .../slutch_beast/slutch_nodule.material | Bin 1071 -> 1094 bytes 20 files changed, 268 insertions(+), 30 deletions(-) create mode 100644 assets/ui/hud/tools/gauge/gauge.png create mode 100644 assets/ui/hud/tools/gauge/gauge.png.import create mode 100644 assets/ui/hud/tools/gauge/gauge_glass.png create mode 100644 assets/ui/hud/tools/gauge/gauge_glass.png.import create mode 100644 assets/ui/hud/tools/gauge/gauge_needle.png create mode 100644 assets/ui/hud/tools/gauge/gauge_needle.png.import create mode 100644 src/ui/hud/grunk_gauge/grunk_gauge.gd create mode 100644 src/ui/hud/grunk_gauge/grunk_gauge.gd.uid create mode 100644 src/ui/hud/grunk_gauge/grunk_gauge.tscn diff --git a/asset_dev/hud_tools/sprayer.xcf b/asset_dev/hud_tools/sprayer.xcf index edac3a43bee5711f89c46b2ba8c3e9cf8a85e125..d74ab0cf20dd5cf57ca99f06bf1d1c967e9339a6 100644 GIT binary patch literal 32353 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 NWnicWCRZf<9{>xU>umr4 diff --git a/assets/materials/grunk_jittery.material b/assets/materials/grunk_jittery.material index 46372d1de8701cc25164d9391d178439604ec155..e4450f66e773718dc8068ea66a0601904b61553a 100644 GIT binary patch literal 1089 zcmV-H1it%HQ$s@n000005C8zj3IG5p1ONaiwJ-f(#|ix)05+|aM)0yG9f%unD+@F5 zQVwN21JzH+^IJ*p%Zf*{ty!|)ne0us+(xXVopfaRNchG+X%Rjae8MQ5rEC0OYyDMK z?QWU>c>F1K0C@m}04TbivNm~ht@|z)E3|DRo!rLtRVpd`pYl!-C2y6^{{nt%Oxc&s zmZqoR*0$WZ?f(G3wN*26on4d`8}sGG%AZ#-4rv!Q+TKFN^E*RXcfcKzSrzs_lP zkf_LU!Q;Sxl1q-YFN3I^F^a^00{;P&`~fy@EqbYjRQvYEmASWaYb|r{vYN)qz1rFA z3c+P1>u!|X#tRHQYiZ)ykE^_TGxA0g%-Y?qweO85CXE-)?(`Z?zBXpBvh1X6s7=Z} zZAPx;sH@Gc*S@S*ET56J){T{C2U#MxZ53Zg3%t43g*@Q5?de2YaCR4WwDpZaLf7(# z|0+TJmXQqz@W1K<+bbWJ$1E5=qB)J()Sp z+9dh4Sk_iik<4kv$Ld>K1@mBPygiP$_wtnG?WJa?W!+lVlA(R7jwPlu#d;@&usJI; zQCdf9%j+#(7?!eGk#q1jX|w@8BS?%$!CV`1j?*K$`88y~YS>^sUauF7QVj+Yk86bG zxZvSG4b~#X4XyH;NMDE6JU3o(oFOA*&{J8hQx@t)=&4 zLn7&f;LwR6S+Nmsy9R*Is8O|2Xl90_AO!`%BS^eOF_>*;uG{;$Gw9G(J~dSBBB-sK^gL-no2Ps6ExTVD)_AQgB(;kwab6neh^F7w}Cn{qKP_%>? zDE^Oy%gy3>AMLlp`)aL$uY#?vuKOqeMWr-m=$N#ezMS$bt z%7cTwVeG^U8|yq`&*y>K%NFI{Ts+d+i+NS;0F^bJvBbs{YuM<$xR4=`r$OkOEc}}| z&eCUtS2kX_XP<|Gctlet9A=!kE1xCvqIFzJ?bk_?AjDL1Bax%~0SEz%g(x9le@fc6 zCyoe-{I3gCJibh$YKR*nd&TA8OA3X-A4Z$MN+|lr=q#hY{?=NZy9ptyUW+^eZ{~*C zFV2xX5wJrD&v(ixoS^K&m+KBy(P*F>AyQ6#cQTu*3PScG6rORZlUGxvC>rj}9MrV~ HQd2`iR~;Cr literal 1050 zcmV+#1m*iuQ$s@n000005C8x*3IG5C1ONaiwJ-f(H3`KZ0H*7ZN8r*X9Uw@K;|u{P z7z)r5ZWzadIpW)jVE}{-2Z~%1xfB+_Eu65t#WJk+ZR?2O#U)NdV{{iO{a>A`E{V(9RWy-#c@-)2# zx0dGy+5Qjk+pMCJS~nx+L!T) zJ$gCX&5uEo^Y05_fl5EJEnT^f7}5$bF`bEGf1nk#;Qi$;^q$$Kup?1NzTC^tXa@tjFv1a#6auK|(u-k;n1#>bjAarR)Jzll?23ph>NeK7FJJ}5`a zMC`sysE)}*aE@^8{o>0Q*N*^u+`OD_(~O~ z?&q_!abY3SrC`gAo<%Qj9a|gSkUd?ZZ`DvcnI51VK$rklzX}i_nFJ-|(brSD@kDpV zIga3dWG$>}luUcI_x&9uM1^sFfNJ4Tz)enOQ|*%rzJ@M-BJHKTqU479nw%{0X^QdL z*s!>UA<(5k=$kK0n7EgvzYX4D{BXxV&jaxeO^tA{asCc`R^~<3agy5aNs>-bspLtb zNB0L15*Qm%RlxBnY1N)NA|~=*7pQprnI_dRHl}-J>!3&qg~0_zGrle;dhzH)qq=_D zT9La4A0Z`;a;ik#{G1Z+7fPn%v}e{Z-lt`B3d3+E|05kRoj>*@{!iu44CJ z|1b>4m;z@2YXEcrw#thAH*ofe@=aT5+qiQbq%2LY!S7``9}{?6=Altzh{__PU>wm} zwAlSG;HZ9@gRjc}1jG9+SThmM{}31#O-P+nr>-8MzZWwYS2H3BusXNQn7JAkwp*t- z1mt_!YO~TiirmuaHghxt=F2^VE}-6OAs#ZJ8&fgkdx}Iysk0g38RvpMqlYmyn#Jq#C(etX3-% zAr7klD&Zr;2Izlq%~<_7xLAz-SD2v@Lc`#CHYiG}1*O&MN5Q4~Hv|Q_&`@Iq36LMb zf$RT(jgE~JHzvY*bVU!skYLP-`Q^2c_!KjGiGfTSjYcF4n8^j6E@V^_Wt)ki1-Wh2 zW(W<*9tWE3PxI#2>3#K>v~5`a`S&_Uvih=h`%GE-0~Oq&7e`26_g%o1>c zpJ1ajzpDH1wpqP@IbMvgFyaa0hf7U1+6gY7`=I*C6mPPk%3vG*PMCluq`U1yxIsDH zivjCu4mEFB7{W7r<9w+@Se9xMG(&<9e{vFK-j_fVbrwDmjiOO|mJ<5Y0)O z-Twh@YRJ6^>-L|(c|yu@rkveZ`)x3*+vCi3^|Jl{@gLnFi z2u(NtJN|EE`~mY>?v@}pIG+j5h4bOiPK(T1WC-UCX7}ZEAvd)~+4e>0NYXZ~*|Tu# zGUjdyHECV74<1k1C#O|5+%`T*PUMePd9R#Y@)Z@!a`S{1au4M9UdX*Zv51zoO3OXV zks>%>St&Q6eYS1^Z7VmW)iqYFs`>8$Uq#peolm8%Jcm$fEl=hW(Lgz?OsPGY6}DZU z_(SA-*>bbSSk}v*;o(A869Vaxzihjj)@{BQa!Z;Hec^`x95g(e3ltK5`cbQ{mDy`q zFSq382c?v#d?#+pIVU3=yOvag0Wmf=HX)dj|HOpk9}zidgbKk{q*AF8AR16VMndPs zOwW(~q;?u$Dz5(%U|@K}EWqH5i4jV{D3#htfT8{jK0Yik#7HrsR zMAVHHD1{J<@Azc9@IU-AOtq$hHcw8&ke4Sm{F9v~S>|7?l1!#*h;0mN@l?G~wFT=N znv!IA>&T|9f7#f#Fp`kL2o7Lsv007`!@tFl61ZT$Q4D+p9^;tsKfQ+LYE^`64@XG; zdAzOWMZaPdLscd!D+yP`WetK4qdxv9=vv~!O4UZcJ~(i^8=R=AhT{QoXCy~Tx_t!Z&a Kn!yrMQ$s_moS3Zu diff --git a/assets/materials/gunk_bright.material b/assets/materials/gunk_bright.material index a20cf49dcec44215fdf7231a77d328ee63cb8ee0..a1a260eff7cd04c9910de96494a1b5ada64ecf3e 100644 GIT binary patch literal 859 zcmV-h1El;?Q$s@n000005C8!B2LJ#=0{{RhwJ-f(`UcGz0G8u-L=dqg9iSjYP=uml zsu?H<3yFi>NBSZFFsqwwWJ_AIH(49IBucW|3kvKGEDL#S&LUiHmyE|)|2F_Mw;w3$ zj{^%^3R?hO0BHdK3w%pN`7);SKY>?{rgqm{NpcO|y)t_{;Fb3@qqbKqVR1|UKVGU= z#M$gkknddBj#eihq|zcZfhlI(5E1JC9hWci*5`rudZn8G2>uK3_ygB2 zcJ0VlKG^QGL3pWRbGbH!jTE^~3LQVW!POdNmavU-1h-kNC!aLdC*`7|Mshc4?2g%% ze56wG*3BM2&569bpXMrRb82K7S#!MC40+We!`_Z`YT0AQR8klsGU9u=in6UyW~TOw z`42MlVnv1%I4~oQO-*EiPm-#x+x;FKX0*Ij)P|60A#uP+@u|NsQCE<=s#tpYBjxm3 zl6)@bN!}AJL9v<9p|HHje zdTea?p@HH*1CRs%4S=lwAP><012A30BnxXe^`Q1gIQ75ACFBQQ@(dhy(qpgcbJA}mo0^H7EUA}q|igiCy0TgbXb z38nBQjC^1iB23xn(~R+%g5JzF=%Gvrx(L`p`oH(49I1W7{L42;zA0KPIp!!Dalyvf1dXD ze+`=gRsdK4VE{0`Y^VHB;JvWK?vffuuECi#W={vaS9K)R^lB0YmGuAPq`u&eW>11# zrCRJ}yZEdbom#t1*8MN?Kjk|XiWoIMi17c8#|KyYZCJe?>E=Iz{{lSz>~uB=Cp9K@ zn{@4;n6x?7vn1I>zP!^H|v|H48{S<4jV!nz+SI1)OO_Nq>b1iiL~5__3j z?S>(=mpPOYzs!~7hFz-Ir6kw*tT8q>HZUhBH>qB{gye;1q?#e3;eW;AbULZ{9aKQ4 zp30}?KLwZ@3t|*hIV5JPl^~x4FQ-#aNX7GK`1zrMAxOrF{|rD5{5Mej=Q#1;_5b=OH{JLZmqmOr@j+Q=D4fu54WH(nxv?0WMTtBZfdG~4-%m)> z&bzF#Kew5HmD42g zhc_%#q~Wm~BkLcDJyq}bniQ82-k$-n!y)o?!nB#&e-RDNA73(YX)F5ds5YrFkcc3z z<`q=KwY+5Djvxkum>TJg`+TE;`^F#~O@G{W{GUOBXmIyqs>dWP3N#ucj{P;EF#`}D w0gS%PgqCK3vZJ&oZeFO_>Dgda=y>5x+2A0C3r{{070^>gpJ&v)15#5%L&$-D0RR91 diff --git a/assets/materials/gunk_lowrez.material b/assets/materials/gunk_lowrez.material index 798698caadab695760d7dbe206c1369fa35721f4..1022f81c9ccf78b636f29668d93a1ada3e3acda4 100644 GIT binary patch literal 856 zcmV-e1E>5_Q$s@n000005C8!72LJ#-0{{RhwJ-f(_6D^X0M?^-Ljchv9dw0|2&#JY zI1~YP;r~r(DK-F%xaiF`vXzwJ$|MRqM z-M6EqTL4`EXaFEzohaePbp9vs%2Dfg&6T9b;N2@Xxcz^?D{pB=Zm*hQakKv)&*~L% zc7rqIJJ;$*>yyx;@~y=k?dAU?|0|pXH4|g>0YlIKj!PJMD+IxN!OZ6Wf&T(L{)=5( z@|Do)SLz--tJqwwJ)t8-u9I4iq3o>XT4iQfM;XG~E!LDz8Y`4?O_4MCn>2REZBH&@ zp?K?VkRkU--rbOU)wDS^GL6hV-fN1ya*?gxj&yPxwi7*y<9`v);L2`8+!O3 zLgRu(1{64>62~SN(kv)RRM+i>4n7hsch$5bW?D!aFjju*FD%rQ#Z6Hzz5KCqdM!!9 zmjfkliJqw3%=k=Oc}pn~_UdY!7~CFjtsCi2}?CiiDe# zjJ%vkDjFjl{#Pn=Zpiff4XU3Vo@z$Re+w`;6vQN`pv;Sx6M~nW9UhVD^mFj>sj(r4 zj1>PDgc$f=095@4d4T>OfcB8iG7gm&{@*gOXg2{?Ty%o6=#5$^%H_XF2o0Tx4w8VK zsG&78B_blDAcci22T+0`RAib z`&N1X!`?O!N}0xLYcBXyaf(?wLgciJx6e%onxl0K!WOlR-!9axMq%#)UUoG()vOsM z^#UhhS%JlF(L-aDFSdt6>z-djY%eT&oFG1W>&r%2%0O)2Z>}AN>>0Hk0-c*&vY=4TYm0;9yD!ZFwws(wU+J iMlW{+L)jp!5T?MvFBu!l{C_H?(TqQZnu`ZgQ$s@*ahdl3 literal 819 zcmV-31I+wVQ$s@n000005C8yV2LJ#Y0{{RhwJ-f(WCo2G05&3XLIBYu9dw0|2&#JY zI1~YP;r~r(u$rI_CSnmHQklu#WNmE7myqu*HKI7%JSc666u409bW;q9amH%@^R&PJ zYuFT409gQH0NGCYpTK(|iJc`i-na&5)|frz{{!BuITC7WHFiP8{(~HA3+ib0WXM%& z#csBXubRv@62GJt zB2_QmOx()+9(*Ly-MXYAW?DoWFen7|tt-S+wLDEOtP8S&BcUs4ujZ&oP-|-_ua~*i zZdgKlnM)z@%N$8=m!*1HT5^rAViz$rHZ?FPDJM56dEp_UXpC_9Pp#OwA@lP)pn`gQ zs2MH)E5P7b5Tk&4GA~|u61?>E_=r$E{{|qS8X9uQQ1PEZ$btU`sQ(=(A07V>Ajd;H zx;isjK=G=?Lc$4fa*>I-A~$N8CYS#vATn$rJV<_EfRm_!HA5vLBC{Zcg)9e9f+19N zrUMcnH8oF3!pw+Fn4vOL*<&}^=(&dZ)$Io8+t*2sM>wbN9cIp#rLi51MR^|BKoFHI zhEIso!mF$}eqJ+ynNRd}Vi8uKxL(_50L9&(Hv2rBV*{aX$ye1z%$c?%vx;~`l9!mw zO;77cYK(U~G(s!(>xITeqp7qay{c!zl8XvzVRA?yq%jo18^d4T&B(`(K%sGv>LjR# zHsa~tNvH_L8*(_-lM*|s-s@|!As=|t3WyActka3n24R0J>bO*V^?^%Qaiv0aNR@y@ zc5<~_K_0H;B@cHDF#(9FAw6^7JsNOd5`?4agWHPJGgKm4qJM0do70j&qjB)qgAf{H x0Ky}Hah18n8Y~d(=*>i<7tXB9Y~WSM5RBnE!&N<>vI=N4!%y7g-T_imLqj} void: + Game.manager.grunk_collected.connect(on_grunk_collected) + Game.manager.grunk_emptied.connect(on_grunk_emptied) + + +func get_target_rotation() -> float: + return remap( + Game.manager.grunk_tank, + 0, + Game.manager.grunk_tank_limit, + NEEDLE_ANGLE_MIN, + NEEDLE_ANGLE_MAX + ) + + +func on_grunk_collected(_delta: float) -> void: + var buffer := remap(Game.manager.get_tank_fill_pct(), 1 - TANK_WARNING_BUFFER_PCT, 1, 0, 1) + _base_rumble = BUFFER_RUMBLE_FACTOR * buffer + + +func on_grunk_emptied(_amount: float) -> void: + _base_rumble = 0.0 + + +func _process(delta: float) -> void: + var weight := 1 - exp(-RUMBLE_DECAY * delta) + rumbler.intensity = lerpf(rumbler.intensity, _base_rumble, weight) + + var diff := get_target_rotation() - needle.rotation + var target_velocity := 0.0 + if diff > NEEDLE_ANGLE_EPSILON: + target_velocity = NEEDLE_VELOCITY_MAX + elif diff < -NEEDLE_ANGLE_EPSILON: + target_velocity = -NEEDLE_VELOCITY_MAX + + _needle_velocity = lerpf(_needle_velocity, target_velocity, 1 - exp(-NEEDLE_ACCEL * delta)) + needle.rotation += _needle_velocity * delta diff --git a/src/ui/hud/grunk_gauge/grunk_gauge.gd.uid b/src/ui/hud/grunk_gauge/grunk_gauge.gd.uid new file mode 100644 index 0000000..6afa6e3 --- /dev/null +++ b/src/ui/hud/grunk_gauge/grunk_gauge.gd.uid @@ -0,0 +1 @@ +uid://dkbbrevmer6tx diff --git a/src/ui/hud/grunk_gauge/grunk_gauge.tscn b/src/ui/hud/grunk_gauge/grunk_gauge.tscn new file mode 100644 index 0000000..be1508b --- /dev/null +++ b/src/ui/hud/grunk_gauge/grunk_gauge.tscn @@ -0,0 +1,67 @@ +[gd_scene load_steps=6 format=3 uid="uid://bnp6vqiixminx"] + +[ext_resource type="Texture2D" uid="uid://bg15yxnlch3u" path="res://assets/ui/hud/tools/gauge/gauge.png" id="1_hn628"] +[ext_resource type="Script" uid="uid://dkbbrevmer6tx" path="res://src/ui/hud/grunk_gauge/grunk_gauge.gd" id="1_mgquo"] +[ext_resource type="Texture2D" uid="uid://pjkrr68wjy54" path="res://assets/ui/hud/tools/gauge/gauge_glass.png" id="2_hn8y8"] +[ext_resource type="Script" uid="uid://cjs2fen6jo0g0" path="res://src/ui/rumbler.gd" id="2_iak84"] +[ext_resource type="Texture2D" uid="uid://b4wooq3xvnuib" path="res://assets/ui/hud/tools/gauge/gauge_needle.png" id="3_mgquo"] + +[node name="GrunkGauge" type="Control"] +texture_filter = 3 +layout_mode = 3 +anchors_preset = 0 +script = ExtResource("1_mgquo") + +[node name="BaseTexture" type="TextureRect" parent="."] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -20.0 +offset_top = -20.0 +offset_right = 20.0 +offset_bottom = 20.0 +grow_horizontal = 2 +grow_vertical = 2 +scale = Vector2(10, 10) +pivot_offset = Vector2(20, 20) +texture = ExtResource("1_hn628") + +[node name="Rumbler" type="Control" parent="."] +unique_name_in_owner = true +anchors_preset = 0 +offset_right = 40.0 +offset_bottom = 40.0 +script = ExtResource("2_iak84") +metadata/_custom_type_script = "uid://cjs2fen6jo0g0" + +[node name="NeedleTexture" type="TextureRect" parent="Rumbler"] +unique_name_in_owner = true +custom_minimum_size = Vector2(16, 5) +layout_mode = 0 +offset_left = -13.5 +offset_top = -2.5 +offset_right = 2.5 +offset_bottom = 2.5 +scale = Vector2(10, 10) +pivot_offset = Vector2(13.5, 2.5) +texture = ExtResource("3_mgquo") + +[node name="GlassTexture" type="TextureRect" parent="."] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -20.0 +offset_top = -20.0 +offset_right = 20.0 +offset_bottom = 20.0 +grow_horizontal = 2 +grow_vertical = 2 +scale = Vector2(10, 10) +pivot_offset = Vector2(20, 20) +texture = ExtResource("2_hn8y8") diff --git a/src/ui/hud/player_hud.tscn b/src/ui/hud/player_hud.tscn index 397700f..e18ba6f 100644 --- a/src/ui/hud/player_hud.tscn +++ b/src/ui/hud/player_hud.tscn @@ -1,8 +1,7 @@ -[gd_scene load_steps=10 format=3 uid="uid://dq1x21tq06dud"] +[gd_scene load_steps=9 format=3 uid="uid://dq1x21tq06dud"] [ext_resource type="Theme" uid="uid://b07fevr214mmr" path="res://src/ui/hud/hud_theme.tres" id="1_lirk3"] [ext_resource type="Script" uid="uid://lrsv0185bfu" path="res://src/ui/hud/player_hud.gd" id="2_j6lpx"] -[ext_resource type="PackedScene" uid="uid://cq8qcp5xg41e0" path="res://src/ui/hud/grunk_counter/grunk_counter.tscn" id="3_5be8f"] [ext_resource type="Script" uid="uid://bdsv404evn4fk" path="res://src/ui/hud/interact_hud.gd" id="3_n6jee"] [ext_resource type="Script" uid="uid://cjs2fen6jo0g0" path="res://src/ui/rumbler.gd" id="4_ud8na"] @@ -215,10 +214,10 @@ anchor_left = 0.5 anchor_top = 0.5 anchor_right = 0.5 anchor_bottom = 0.5 -offset_left = -400.498 -offset_top = -299.892 -offset_right = -400.498 -offset_bottom = -299.892 +offset_left = -401.541 +offset_top = -299.173 +offset_right = -401.541 +offset_bottom = -299.173 grow_horizontal = 2 grow_vertical = 2 script = ExtResource("4_ud8na") @@ -239,7 +238,6 @@ mouse_filter = 2 theme_type_variation = &"AlertLabel" [node name="AlertLine1" type="Label" parent="AlertHUD/Rumbler/GrunkAlert2"] -modulate = Color(1, 1, 1, 1) layout_mode = 1 anchors_preset = 8 anchor_left = 0.5 @@ -261,7 +259,6 @@ text = "! GRUNK ALERT !" horizontal_alignment = 1 [node name="AlertLine2" type="Label" parent="AlertHUD/Rumbler/GrunkAlert2"] -modulate = Color(1, 1, 1, 1) layout_mode = 1 anchors_preset = 8 anchor_left = 0.5 @@ -284,21 +281,3 @@ unique_name_in_owner = true libraries = { &"": SubResource("AnimationLibrary_ud8na") } - -[node name="MarginContainer" type="MarginContainer" parent="."] -layout_mode = 1 -anchors_preset = 2 -anchor_top = 1.0 -anchor_bottom = 1.0 -offset_top = -77.0 -offset_right = 123.0 -grow_vertical = 0 -theme_override_constants/margin_left = 32 -theme_override_constants/margin_top = 32 -theme_override_constants/margin_right = 32 -theme_override_constants/margin_bottom = 32 - -[node name="GrunkCounter" parent="MarginContainer" instance=ExtResource("3_5be8f")] -layout_mode = 2 -size_flags_horizontal = 0 -size_flags_vertical = 8 diff --git a/src/world/grunk_beast/grunk_beast.tscn b/src/world/grunk_beast/grunk_beast.tscn index 965b95e..a950a51 100644 --- a/src/world/grunk_beast/grunk_beast.tscn +++ b/src/world/grunk_beast/grunk_beast.tscn @@ -218,7 +218,7 @@ metadata/_custom_type_script = "uid://om57w2acvgb7" script = ExtResource("11_mbqcc") mean_time = 4.0 st_dev_time = 0.6 -wait_time = 3.8583 +wait_time = 4.72586 metadata/_custom_type_script = "uid://beyk2xtbjrsg4" [node name="RandomStalkingBehavior" type="Node" parent="GrunkBeastBehavior/StateSelector/StalkingSequence/RandomDelay"] @@ -264,7 +264,7 @@ metadata/_custom_type_script = "uid://cg016dbe7gs1x" script = ExtResource("11_mbqcc") mean_time = 5.0 st_dev_time = 1.0 -wait_time = 5.01985 +wait_time = 4.0544 metadata/_custom_type_script = "uid://beyk2xtbjrsg4" [node name="PickRandomLurkTarget" type="Node" parent="GrunkBeastBehavior/StateSelector/LurkSequence/RandomDelay"] diff --git a/src/world/grunk_beast/slutch_beast/slutch.material b/src/world/grunk_beast/slutch_beast/slutch.material index 0e41643f917a2c3cf32651655a8b9d5a32b7856a..8fc26316967afb382c94c6c555f7d7c261ddf3fe 100644 GIT binary patch literal 1090 zcmV-I1ikxGQ$s@n000005C8zm3IG5q1ONaiwJ-f($_WJ_0QT*bMDUi94vZf!)9n6m z!xc3w4hCjo*6{H#-B8$CYh*7W*_+(pZiGm(ljnro`8zNcQ3?AjU&v%s2SGCf3a3X( zm|%}k3UvT^0EYmQw;9}*#VltHRbAC!KgtwNsb$-)XPoc<%b5m@oAs3c1-v#SQD;ex zBA4Kla?FIj28`rqW|?A10^f zFbTDpk18g)D|Hr|WG>-is0w@K_BI|k<2*!i3oTS)e!x@i`pLM$ z6e}v-6aQgW@X+C*hN&mUF{yn>Z=WN{b*b$NVxLHzfVINw(rd6dw zxm#{NEf&RfsEy5~SySPX(4Dw8mmoNh*k(@K%-NhoH*+MpVHPuHaok5;X_JYtiC|Yb z-(!tdkRxoHJ>xio6~e~IC#W?DJT6|icnPIKfcOU!H6H#B9707vAP|Qi6iSkVv!U8a zeM)F3k@_?I7(z;}3!xyO{}xO%x#9UAS`+`us*l=?{w8A4=)6CgHz2@!sq znUw!277{j|G)m|{$_mQ=6b%22Ufm+CDqR*eR#~y9DTI;Jy)KhWkDH=)eQ-1`JfADV zKt_(U?Ov`2R8=}GL~H?o(5PXxQfNkIBuPO*G8|9>A*IHQ8xp{SDGZ{75=ABuk&}_q z6jTb+ZfGA8HX5af?vr>k$4r}SHpAf>{!R!CswDadKAzl{_CIoB?D%_>fY!kYE|`=4 z#>YEB;>8KuZo`)zHUX@yWv6`xAjm|GF1grunS^diBUu>r+S`q9HLibgHl~Lnq{uj5 z1s!X-Qb#L;e`${&ikteM@y#;b09g}9cYNM$oK zQTD-2Z@xS6U}HUtjPu_p?Ujl?hb|uT?!~?;caX}K##mw*iuG@F__z=dDE&dpH!V!x zqFhJ|4$k!9;@t2Y4~XN?aD-zM$EVO|VP13{cd6s;NivG-Nj4J)b$s{SCNI6qK>iNvb>Lyho&p6-z0p}SoZq`%&7x3D!M4cr$j+}y1 z$}wA}{{y@>n!NUvHCg|9|<<;V+5^`C-9= zL&^V?$A!&xQ#4yka`C^we*h|fJ33W!72_1@S zv&qJR#5QxU;?DZ58>voc|rM~S`ksBNsIoUsGR&q@o^C8 z)h*Jh(&bTOl@)uQJhY5X_qt9k9e#@1#lg+|eC`MfjjprpUalupRUcM>*jNOB$Eaa7 zQfNkoBuPO*G8|9>A*HB{8xp{iDa)b65=AHwk&}_q6e>Hr0o8-{W4w-|HnVEaI<$kf zd4ZuyMjzuNBk>LY*H1*d=U)G?b1=XI^Vc8wYGRY1zGwh!cFDULaFr_u%RT{v&gN2! z{VtQ$l}Hhsy}dpG&NrQFZgm@TL47i2{HB5uA~$)u(QZfgHb%VyH~-JaSIYpocnyOt z_ZhN1cA>Ac9bZQ+9EceJ`2&#s56twS>(kqBN~h@pCP6M{2Eb$zQ zQEV(tT=O9iFoVoDEBvpBmrLs#oWR4zz4wd=h=JA6!m*62%KJG9F9?nw(iiR|i|z;{ zn-EuYpBF-}0d5`%EDj~s#e*aAME-EW;m6N3rUtHKkXKv|7E-_tRyUgTio57F+aMsY zZrrjscR_@#-t&0oV$98ZU$`Qv2>7A9=QHQ7krZ`F!Fq?dXfnH#VL*;~IGGKv!Y7*u X1J5|i$;YSyG#XCKPWoK}Qd2`ia}W6Y diff --git a/src/world/grunk_beast/slutch_beast/slutch_nodule.material b/src/world/grunk_beast/slutch_beast/slutch_nodule.material index bfbbaa5328b07997be1b0e8293217f1e44b8d29e..4f4af01049ccb8caab577d9237da26e433b82359 100644 GIT binary patch literal 1094 zcmV-M1iAZCQ$s@n000005C8zp3IG5u1ONaiwJ-f(%?TwT0A{Y1LGail9poh;pG_&k zmuI~ehFaWo)Z^krzM`+5?dP;oFg~NWMy!hgp6BXl5+o_@E_+pwnS-C z#pFEv2XMHrxh{=nx1${Y7yKU(;14}-S~!dHQTi;Fc?}KKT-n;*$zV2OqwQYh|rXrCH6oq4B#dQM!%#wG? zT|XArH={djLOkRQ8A7B3==8U6;^Ya7EKGv@ z95(zJVqX5A1hfdErCmV(T>`lLf2sM0;pJo;wR%BHRk|GNigK`JNoUIGibSOXN?w9f zgo0HlAmegFmCcmXT)QH+V-tYTs8O|2Xl7<4NkKs}98dxwrKXM>62OBg45Ee-VC?E1S3ZaPPOY>jx(yLSPtv)&UohKM}LH-I~dY6ys$=}@2`+4w(n}Y$) zpWFMuS9f7>+PhqC^Oq$y0W`5C6F#31Wl-DegxFh#(J~217B1oXJIJ>%u5tNf3_P|W2@Ijs)fCvKB>zOl6 zbq^F|g%XYFFODKKbD8zI;w(tuPZ_k-Rh(?MakuAa$cjgZh=)9&3oIUkriU8O9xYxBY%HX7H>kh}tnauYAzULKVs-bg#km6_B=k~J1LCiSPvw#Nvn`2EW+p+2Rr#>RDh!4 M&Xhr2J5p0aL)0x2asU7T literal 1071 zcmV+~1kn3ZQ$s@n000005C8yV3IG5X1ONaiwJ-f(WC?8`0H!UJK=7I*9ps<@dAN?p zcKFJH_j|hIKXhfFG#_iNH6oXX>`k_3H$o)YrFVx}vl`vo8pNW}w8MlX0T3ekoB$9a z1#|#+0EYmZ30bbFCGf>c-5PuB=FTT0b}2WOP`dvLzC#|=i)H+u;LXowHYzRzH3^?{ z;iWtOBY5+Q;=`8eko7k7-@rpnz0qD88GPfq*pNUDTeBYOFAWaGez;)~xuj3lFsw zmwPs9M;0ERTBUxhF>?wbe6C2_Ne5r7)J_+?cUF}wxfn3A9RfH{-sf_6uI+atM^CNs zpFxf$N@R+RYJl8|SjWaG1WmJdPNndgnB}ZV>*K}}XvGPMEq%)B%*pYbrWbSB0BO6G z6!MB>h7nbKjkL`x@}MDFdNoY1*5Ni&uVxc7i`uoQh3aM#WfneUpvN7hbBoOpF=Sp}5h#4eEl7#r&{4%6SnG&N56eB-~4}S+vfd4lHWEk`0Qeu^$~y})O2&}u49=;iE{Ls(f-FZg2Z(%XRgDe+`3PcFi-w`grGhLEk;7!F zRjct#(+eE|fXb*rwNhwih9pTrK{6ar0wJZSj2jZblPSxQ#u8*G5RsFS(iAE?y8&)^ z2-TK9_`fPHX_;m};WH0{c?2Dom_LG+4EWPL!k>cmZVX1CZ!m!S=kz}Hm9mqOy%;cV z>~g>c0Bcz0&1V>lOsqH46?-fbx+|Cw+0pQB1bqazWUov71o>67e{ zh}i)bfBoU5r{Zjo$|J2%V$6zFZ8WW1cpwm9?-^lS)AMmUPfSdncxFV?t_@TS!lh55FDep4I pB7`V6sqGXo>0>