From c02296721a054f8c6480f176dc503083ee3fca2c Mon Sep 17 00:00:00 2001 From: Jakob Feldmann Date: Tue, 19 Sep 2023 20:04:45 +0200 Subject: [PATCH] feat: thwomp improvements --- assets/Main Ship - Base - Very damaged.png | Bin 0 -> 989 bytes ...Main Ship - Base - Very damaged.png.import | 35 + assets/contraption/FlyingLaserCutter.aseprite | Bin 9560 -> 7012 bytes .../contraption/FlyingLaserCutterShaded.png | Bin 2054 -> 1952 bytes assets/contraption/PixelPortal.aseprite | Bin 0 -> 1831 bytes assets/contraption/PixelPortal.png | Bin 0 -> 938 bytes assets/contraption/PixelPortal.png.import | 35 + .../background/asset-test-background.png | Bin 0 -> 9279 bytes .../asset-test-background.png.import | 35 + src/Actors/Actor.gd | 2 +- src/Actors/Blobby/Blobby.tscn | 1 + src/Actors/Friendlies/WhatAreFrog.tscn | 1 - src/Autoload/GlobalAudio.gd | 15 +- src/Contraptions/Portal/Portal.gd | 12 +- src/Contraptions/Portal/Portal.tscn | 32 +- src/Contraptions/Triggers/ElevatorButton.gd | 4 - src/Environment/Grass/ShaderGrass.gd | 9 +- src/Environment/Grass/ShaderGrass.tscn | 1 + src/Levels/Level 0.1.tscn | 1070 ++++++++++++++++- src/Levels/Level 0.2.tscn | 3 + src/Levels/Level 4.tscn | 37 +- src/ObstacleObjects/Mine.gd | 13 +- src/Platforms/FlyingLaserCutter.gd | 26 +- src/Platforms/FlyingLaserCutter.tscn | 22 +- src/Sounds/default_bus_layout.tres | 4 +- src/ThirdParty/Demo/meshinstance.gd | 4 +- 26 files changed, 1310 insertions(+), 51 deletions(-) create mode 100644 assets/Main Ship - Base - Very damaged.png create mode 100644 assets/Main Ship - Base - Very damaged.png.import create mode 100644 assets/contraption/PixelPortal.aseprite create mode 100644 assets/contraption/PixelPortal.png create mode 100644 assets/contraption/PixelPortal.png.import create mode 100644 assets/environment/background/asset-test-background.png create mode 100644 assets/environment/background/asset-test-background.png.import diff --git a/assets/Main Ship - Base - Very damaged.png b/assets/Main Ship - Base - Very damaged.png new file mode 100644 index 0000000000000000000000000000000000000000..bb59a0e34ba9848c33f9d7fe9c479c90654c64d7 GIT binary patch literal 989 zcmV<310wv1P)Px&mq|oHRA_)^MMI!_4q!6TTP(-i@{(~LEC9y7f z$cTavtrXH&GB6=%No5lPZ*^!6vg-tfkQ0<;QC&I|WC>q~-Fd#5omt zANLLxxweNJ_W&uHit}f$F~iA+1+GOQs{*VJ_WDFG0HD~VC}do-t!h3I(dRp@=vb%( z0DS$T0RT#ZV_2W)MLhOo$NQSGqcgyJ+^RB__}T#^qEHeX!~D-bIB+4llP$9kG9ebM zCq+|fq_m2fyXUF7d!CIcn(F$!;22yK7}1f^DpE9+6iqdd=LF@FBKYj1*19iYyz9 zU8kE955pl0_6?=HR5?DbuL((#2&Sr}@0GRA*2WtwuN6%-q>vT({O8Yxd2Lb8>kvvI zmMa{2J#DUr9+~H|=eXQpyJnBS)9{@q?!@z%oB>9Ds(+Lj%LaPc^T6Szl$ZFqE3%Bc zbN4M5cbYa%1(4j@0RVVh(15n#5XuU^8OQ;^^`!*>Ky*(tI|FUQp~M12XkT~2W85Ytr{ z0YERyLLxHih1!NgnCc&eFW?6Nbf0Mf0CXkFA^@P)=58Qv&Lrx9LZGX76>+%%zVR1$ zx48kl*%0O;EFeBT$I@kaX$`)BpApAa9Veb3kEBiFt7O8aFtI)W$4~6V^Jm|M1&D$a zO{H)oO5sQ}Z9k*87JM)C>2^!Xd{eDw?@TteS?W4LjxJi3io;Rs}<*RZ%j_5Q|`?_2w2tKa!2e*+Q`nFZ)}M#SRh zsofY4R|Ht4M>-OA=_E;#loX%;|F_z~X?L2J_%B3w@ZiCN2UqYHx@B@#H;of700000 LNkvXXu0mjfInBim literal 0 HcmV?d00001 diff --git a/assets/Main Ship - Base - Very damaged.png.import b/assets/Main Ship - Base - Very damaged.png.import new file mode 100644 index 0000000..791c7a9 --- /dev/null +++ b/assets/Main Ship - Base - Very damaged.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Main Ship - Base - Very damaged.png-926168939abe4d38178928ec91f12a7c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/Main Ship - Base - Very damaged.png" +dest_files=[ "res://.import/Main Ship - Base - Very damaged.png-926168939abe4d38178928ec91f12a7c.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/assets/contraption/FlyingLaserCutter.aseprite b/assets/contraption/FlyingLaserCutter.aseprite index 17c51b0d988a52447f866efa0e3db9e8607bcd69..b535a530f9a56bc3f0f9b874c847a1bcd8c379dd 100644 GIT binary patch literal 7012 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 diff --git a/assets/contraption/FlyingLaserCutterShaded.png b/assets/contraption/FlyingLaserCutterShaded.png index a51625e42385bb5050093059417ef2fa857ab3c5..a0d07d2ef91468aa92cd0e3809d6a6817ec75d76 100644 GIT binary patch delta 1924 zcmV-~2YdL25TFl`F@IV~L_t(|ob8=GXd_1y$KMzeLy$HrRHO*_K3p8Zm2q4+odbr0 zD~=EqA@yC4 z0K9Kr!ABo|Vw`_`&x5o3PvEmJAEEGrhd1G9Yp)XgW${jHx7HIMJQ_3l(;<^k6;{J!ha-)j}6ffKc42w^_vcZFII@< zn&(5^o1U$;x(}1_C|2*Isnw^C`6prUkKLE}v0PV&0EI7B2kA)`#hr*1f(~#6BUXsa zG1x?iZzJzu)VIAaTK*_|r&FvTAjI?x*fGVC};VsChnY zZtsMmdUCY2CyOo2Z?!v&_}P5%acpyYClsZxaer_*o3Uv~~+d;f@8ngr9cVH{k-WIQrH4!Fke z_qt(oh0Ur227ffXoK*=7zPP=_$AG%mKpkUD@)uR4*D}x^wcHi4lLw*D^Y| zRlv2A7tfzDS+QG(Z>m#V75M=3o%G0yt~j5(=!)~ni>`Rci%#Gl-}3+fVB@F2$$!^R zUUUwhcbmoLzeirQ9lpxdsv>-qt5xJhJH(f{o^7fhHF?n%_+|E^CNH{z{JCzku6w`4 zk4KzCP@k-llXe9Oi%$nQA($8YReN-(@?%bx>0t5sFM+`qjSkoOF(=EUm(}leLo7Zw zE{LDb2SDx@op(W-__+LBqa!W4t$+H6uQ$%i@>}f=Gwwx4XK}81(E#&1AB)dRC^p}? z7ac7-ruoqm2!k&g5w7!{`K9#cK8hF3*WO@xzdYFdw7A4a@uG)U;mpg$ z;PYVf^Wp*@#fxsPFlZj`XFjnGUuOO8B75Cs@{N1Z0OpK{G`=Y#B8{(-MSta!7hQ2a zdC?W;lNVj_kQZHXK6%j<lL@!9d>7ZBP4!0Kk<67te2bic}+CyG5B-$ zC4ORN(p~N=D41xcI1IknDSytzU~03RuO;1OCE6(tgD+MH(FxcZI)8-Y@a9L;a#F&Udn3H1REa(JCQ64xhZ}iu1{f zt~ftdqA_1Q@#8Te{AGo_Xv=)YP>-*9FFNYwVtc=?@uOaJBG6!@uO{&xPW*@WO00Q4 zoSqyrK2=xk_@E{@}e#Cf4ewGJ?P{`TjpcGtN#P_I1qcyyHff90000< KMNUMnLSTY$>DxB| delta 2027 zcmVg@TxyOM+kz=41~!l!QGlh6;_PJuHX^A(9m7L3#)n(3nG!kgS$KA#BV+2vx>I ze6w%fyqS43^L;b>#_xYhhS}dtXQ$u1nfIG7&eGbZ3n7`fdw(OaZ2QBn!dBOQE^2+| z)AK6;0J}f^tX*+;d>&?ZR{YDPbzgt;jlgF<``{{^JQ@H1fb(DO!}iw?(fQl=k6~~6 z7QFZICnWrnM+2}ixljtev$VG9iVrLqW5{puyCc02HVcmys>>xwdA8k_jN>Tp8B*MC(9s^jC8XdS%T?RfBNw*&i6 zo)|%OVSX>QK?iDszRM;m|M;luRf#}}u68@#&(DWPv_EGF^Ys-1lP^~Y-yrL7Y{~;+ z9T4W{&zCEN_XVpXHTg`!2=nvf57mafDxn=ki<%#m*_{;t{cT%pn4cd%@;+E>MBP}{ zp*!>Q<9~tx(pQhPY<`={_dXgnJC@%bmV^eT%d_K{Jm|qM(_6t@=bMj!o zWM+f;#qzaZu&y+OCCxvA`T6lf{|8gt=P{p-|Hs20&*_#AsFTX#%u$!64fFHizkKzr zf7E5|R@1EjoZVAB=$s9xFTQXN9!o398@qhvihuc@OJRO7{F%9iBcW=O_yZ(93*`+(7QW^8<`4!!YX(C30vrBh;%eI+cC_mE4O5)|p%XOb) zet$81E4^suoAb%NT;>_M%J9XD_4CoUM1hh^!D8{HO|%l`kJ3GA}yrOUS~nZ!KHRpIl#rz3E$|d{H6Dyy*JYGPGMw zm-)dA)rP%JI~06*3_zb9>$gcoE@180|8A+0MtLcKW^Vod#;4t4Gna^Hy z$@%O>mz>XDbjkVbMQixm_m2SpVB)(IEBBwh=or4}HcQnnnwrmEbWD=YRwd;povmUo z+A_ZBOjTOGJX6J9bOHQ4`%$wOU4KHpJfF>8bP4%#h2VbCIrHOsbYSzjU$iE=$qX#M zu15zY-`alB>U16^-!nQ&z$fh&9aWC9@`Z81{BS;ifs-YV;;P+FqWdznr4RG-<+oc+ z*GezC4E#8$4}%{tI>Nwml6tw={G>_4Pjc|n@=gD|T~P$ilJiNtXfc~X<^76K^F?gtlX%fbr!MSG-y-vVMX335Y~}l&WMNIb z*9IM^tuF?aWAVe@%)3s}a6rFMs#u^`4jOIF7Tlw&{(Cm`~4t?XRX=|Lo#L?gw)dls>M?@F4;USoUaqcF944Q#AAfb2F@niAX~2TT zC-I`=l$5M|%6`-{a}7tlze~jz_rZDaNxkT}q~&uzYI8nmzi9b3z$U)jDUO1lXFqB( zFIsrHHu6PX%@ncYmEHpDLvNqUCbL{AfN^ z0@q-%(_+WdYMf!l1@n7JbG=U*l77)qf1A$+K7jr@Pwib(1l^0K_I?4v4?Y%O7ivCL z(7kAC@7E-@^D$$k7yW=%!Bwn;^)@0l073ayP4v817zIQ{_kD7|FhMG?q5-(c!*EO;GQLC}lTc!?4zv!@F z_M@ic7uAoNB363QW$Q;x8TO(J=Ku1vLvK~u?ETu#zefCI^Iu>#PzUAy7Igps002ov JPDHLkV1fpGC|Upj diff --git a/assets/contraption/PixelPortal.aseprite b/assets/contraption/PixelPortal.aseprite new file mode 100644 index 0000000000000000000000000000000000000000..0e9ba9e15110eb130b3d00d10344aff14c9a9624 GIT binary patch literal 1831 zcmcJOe=wAJ9LJx!{5UmohjUA``Lz_Mwe~vg%CBmN$d6R0Q&_7wx;SMOQ+N7tvvsaq zq#rm%b+eMJLMs|tx3{rm={BsULU+PQOGJC`$K2dC&0PQ8_nGIlyWic}&+~r0pNFPH z5RZ!I5!BgZ4nYuHoc}HkF^AkF3~>A(OYs3gOpR*IPSwJIPjKo`XGgv@t`Qp)D(CN= zwQqex5ZccU*` zSzIzG_B{*oR~`U87#l!qOBc{`ktyiB%nsb`NzS^J!U4N3MuRW!p93F0`V*|EZUY6` zWneE9;19vUU`gu<$TBksrGe3}3$*^l~Lru-R<#y_Xlr z;gHv_G9`0eFg6BL_4UC=YGwp#+Pzc&U73cva zpaJNIdx(d1Qn^M0*)R>wa16n)3$^eHsW1wia0!vH2!-$mc`yfUa0X$p1y%3_NiYOG za04;00wwSP88872Z~y^FkLbva&`6B9$cmsyiHOLzn2blo-Tco&ZbFCfi{!^7QR&a| zL5oTdbMdMnF}oHKR3i1<(1SZ49$3CWEAYtI^H#J9ID2rk^4TLSrYtdIZgA)nT?;fUKeN+t znPfj(;<;5i7US*M{F8H>GE^2@W074tEZIz_D8Je!VD>~9zi?T{pkzr8^SI(44{@h! zlX{&7G*`~=m5mMLPbe6R+vTE+gf{oeJZ?wD2|kyZeVQ-0m#Xk|;Falal$tk3=``1l z)bOsP=hKsWvxA4DSLiAZ7S15s)aabqXPSJHhj9LPc7MI^mK$hoU)XL|m88txGw}1$ zqw#X8sLH^L&$yk7$@R}0vpCL^6zxRu&6y|0lV(!NC7RG7xBR*v_g>T7`O3B%B!c22?x|4IU5H^ zCA<(ZOCWtUG1a_Hrsih|rrattzh$^{E)K+xGve!7es?cr*vHFxEmls^Pp1X>qr!$z zp)^F!3YVCR)af@}_Vo-HSEyO`FDzcqJu>x5HvUfd{`ZD=(`!KS+k5RdG;O_M@=Ou^ zO+rqKtM`(--u0QZNuL~lJNl0KZ!D*+Tx}A??t>*-uE(W$iHu`*x#dNE-0r&h3%L6n zrI(dLWmH(Ru7F7y9NlkYWRX1KfcOD2M|p!jw`fsu_qgUp>dCOQ@Wh}9ecKgTm-Px&WJyFpRCt{2TD@yjK@fjyQUwmIu0BMr)W5(gppDky3JV(>n}D4~cvz$h*w~~= zks?@Yqi~gfftEoebt)lnojePju)8-iJF~m*t?%Opf!u!mW@lzU-t3r4iOZ|&hO1vL z=0-baNq%u-n|QT4K-*kge25mL6u+pEggixvlKjC2msi(~Px|`nDcbhr(aSAiQkBp) zKU-;&Q=}9?m=q;+!B1ACkZXk~$&VK1AlC>{l7Fi}LVk38 z^Bt0$tBU(9^h+CLr(S4ctMx^yY`RJCBw$A_s7of zyRY7e`f(f@{vR*yIcxd;*-!S0OmWdK|_;a@0wWLjbD) z>Taz;${1bn-zoq;68xZo56;3N>%-XC2a%MYvvA1z7{B8Ib~p)uX%L$zR)+P(IJErO zM6ogn|L#_c>aV6kcX#bt4_Q{ruU+dDzvBVR#oS1(5CWxrE*?;VpWFm}jcJ7N+iI-e zHGfn{OcRl5BP5oSe+r7WB}DJT;+PPC(L9XULcsr{dm7USG1$jZN)QZvdmbPC=kT-y za*?M9QIfxx$6#H*L&vP^LuY>&RDJ+8X$qi>LF5N$Cl8P);lIxhh@Ctjq=cyafZ2M3 z3U#x;hn~@~`2neu2XIPI)bT$2xt<%Gnz_xag+W1c;EC?fp$`J2JK z0p8~+FW~sAs;Z>?|76%I!}vw{0i4w-_MO|)kgoktU%ngvFVqLdPRb7$8qjwEK#KM4F{tA)1y3J8$TH^S0i^|qg=Ec3FnSM| z6u?#H*u2`<0CPf}ACLk`et;j;$O#x*l^>8|L9DMfKOi@<b%7 M07*qoM6N<$f^@0AD*ylh literal 0 HcmV?d00001 diff --git a/assets/contraption/PixelPortal.png.import b/assets/contraption/PixelPortal.png.import new file mode 100644 index 0000000..1f376b0 --- /dev/null +++ b/assets/contraption/PixelPortal.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/PixelPortal.png-6516e8317c3e4aff451056cc71fdb2fa.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/contraption/PixelPortal.png" +dest_files=[ "res://.import/PixelPortal.png-6516e8317c3e4aff451056cc71fdb2fa.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/assets/environment/background/asset-test-background.png b/assets/environment/background/asset-test-background.png new file mode 100644 index 0000000000000000000000000000000000000000..2d39b39474163f5d16c071948bc167a10b0edae6 GIT binary patch literal 9279 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

)fu^zN*41Ukn{$Mk_ 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 T4tB?4|N6SA<-Z)-_WVBpR`;RW literal 0 HcmV?d00001 diff --git a/assets/environment/background/asset-test-background.png.import b/assets/environment/background/asset-test-background.png.import new file mode 100644 index 0000000..72ada28 --- /dev/null +++ b/assets/environment/background/asset-test-background.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/asset-test-background.png-bd588dd8a6fda7f7a728a8204d88f193.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/environment/background/asset-test-background.png" +dest_files=[ "res://.import/asset-test-background.png-bd588dd8a6fda7f7a728a8204d88f193.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/src/Actors/Actor.gd b/src/Actors/Actor.gd index b2f3c64..74a574d 100644 --- a/src/Actors/Actor.gd +++ b/src/Actors/Actor.gd @@ -30,7 +30,7 @@ var max_velocity := { "duck_walk": 165 } # x is applied directly to velocity and y is multiplied with acceleration -var duck_boost = Vector2(2.5, 0.75) +var duck_boost = Vector2(2, 0.75) var velocity_jump_boost_ratio := 10 # This is added to the acceleration force initially var init_acceleration_force := {"": 0, "idle_walk": 4181, "idle_run": 5765, "walk_run": 1000} diff --git a/src/Actors/Blobby/Blobby.tscn b/src/Actors/Blobby/Blobby.tscn index d1c490d..7cb669c 100644 --- a/src/Actors/Blobby/Blobby.tscn +++ b/src/Actors/Blobby/Blobby.tscn @@ -4343,6 +4343,7 @@ __meta__ = { } [node name="StateLabel" type="Label" parent="."] +visible = false show_behind_parent = true margin_left = -37.0 margin_top = -44.0 diff --git a/src/Actors/Friendlies/WhatAreFrog.tscn b/src/Actors/Friendlies/WhatAreFrog.tscn index 48de187..930a021 100644 --- a/src/Actors/Friendlies/WhatAreFrog.tscn +++ b/src/Actors/Friendlies/WhatAreFrog.tscn @@ -484,7 +484,6 @@ position = Vector2( 0, -7 ) texture = ExtResource( 1 ) hframes = 2 vframes = 4 -frame = 1 [node name="AnimationPlayer" type="AnimationPlayer" parent="FrogSprite"] anims/RESET = SubResource( 5 ) diff --git a/src/Autoload/GlobalAudio.gd b/src/Autoload/GlobalAudio.gd index bd52ac3..e0c27c5 100644 --- a/src/Autoload/GlobalAudio.gd +++ b/src/Autoload/GlobalAudio.gd @@ -6,8 +6,10 @@ func play_scene_independent(sound_name: String, bus: String = "Master", attenuat singleton = false, start_time = 0.0, random_pitch = false, pitch = 1.0) -> void: if singleton && players.has(sound_name): return - var disposable_player = AudioStreamPlayer.new() + var disposable_player + disposable_player = AudioStreamPlayer.new() add_child(disposable_player) + disposable_player.connect("finished", self, "dispose_player", [weakref(disposable_player)]) var stream = GlobalState.sound_library[sound_name] if random_pitch: stream = AudioStreamRandomPitch.new() @@ -17,12 +19,19 @@ func play_scene_independent(sound_name: String, bus: String = "Master", attenuat disposable_player.bus = bus disposable_player.pitch_scale = pitch disposable_player.play(start_time) - disposable_player.connect("finished", self, "dispose_player", [weakref(disposable_player)]) players[sound_name] = weakref(disposable_player) func dispose_player(player: WeakRef) -> void: if !player.get_ref(): return - player.get_ref().queue_free() + var p = player.get_ref() + var sound_name + if("audio_stream" in p.stream): + sound_name = p.stream.audio_stream.resource_path + else: + sound_name = p.stream.resource_path + if players.has(sound_name): + players.erase(sound_name) + p.queue_free() func pause_scene_independent(sound_name: String): if players.has(sound_name) && players[sound_name].get_ref(): diff --git a/src/Contraptions/Portal/Portal.gd b/src/Contraptions/Portal/Portal.gd index 51b18c7..4b0d4db 100644 --- a/src/Contraptions/Portal/Portal.gd +++ b/src/Contraptions/Portal/Portal.gd @@ -7,7 +7,14 @@ onready var signal_manager := get_tree().root.get_child(4).get_node("%SignalMana onready var levelName := get_tree().get_current_scene().get_name() export(String, FILE, "*.tscn") var next_scene +export(bool) var is_active +func _ready() -> void: + if(!is_active): + monitoring = false + signal_manager.connect("terminal_activated", self, "activate_portal") + else: + $portal.frame = 0 func _get_configuration_warning() -> String: return "The next scene property can't be empty" if not next_scene else "" @@ -15,7 +22,10 @@ func _get_configuration_warning() -> String: func level_completion() -> void: GlobalState.remove_savepoint(levelName) signal_manager.emit_signal("level_completed") - + +func activate_portal(_time: float) -> void: + $AnimationPlayer.play("activatePortal") + monitoring = true func teleport() -> void: GlobalAudio.play_scene_independent("res://assets/sounds/MAGIC_SPELL_Morphing_Synth_Harp_Scales_stereo.wav", "Music", -15) diff --git a/src/Contraptions/Portal/Portal.tscn b/src/Contraptions/Portal/Portal.tscn index 0b9c703..2279508 100644 --- a/src/Contraptions/Portal/Portal.tscn +++ b/src/Contraptions/Portal/Portal.tscn @@ -1,11 +1,10 @@ [gd_scene load_steps=7 format=2] -[ext_resource path="res://assets/contraption/portal.png" type="Texture" id=1] +[ext_resource path="res://assets/contraption/PixelPortal.png" type="Texture" id=1] [ext_resource path="res://src/Contraptions/Portal/Portal.gd" type="Script" id=2] -[ext_resource path="res://src/UserInterface/Screens/InGameMenu/LevelEndScreen.tscn" type="PackedScene" id=3] [sub_resource type="CapsuleShape2D" id=1] -radius = 22.1169 +radius = 40.0 height = 22.4675 [sub_resource type="Animation" id=2] @@ -35,6 +34,22 @@ tracks/1/keys = { "values": [ false ] } +[sub_resource type="Animation" id=4] +resource_name = "activatePortal" +length = 2.0 +tracks/0/type = "value" +tracks/0/path = NodePath("portal:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.7, 1.3, 1.8 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 1, +"values": [ 3, 2, 1, 0 ] +} + [sub_resource type="Animation" id=3] resource_name = "fade_in" tracks/0/type = "value" @@ -64,15 +79,18 @@ tracks/1/keys = { [node name="Portal" type="Area2D"] pause_mode = 2 +z_index = -1 +z_as_relative = false collision_layer = 0 monitorable = false script = ExtResource( 2 ) -next_scene = ExtResource( 3 ) +next_scene = "res://src/Levels/Level 1.tscn" [node name="portal" type="Sprite" parent="."] -scale = Vector2( 0.1, 0.1 ) texture = ExtResource( 1 ) hframes = 2 +vframes = 2 +frame = 3 [node name="CollisionShape2D" type="CollisionShape2D" parent="."] scale = Vector2( 0.3, 0.3 ) @@ -86,13 +104,11 @@ visible = false margin_right = 1024.0 margin_bottom = 600.0 color = Color( 0, 0, 0, 0 ) -__meta__ = { -"_edit_use_anchors_": false -} [node name="AnimationPlayer" type="AnimationPlayer" parent="."] autoplay = "Start" anims/Start = SubResource( 2 ) +anims/activatePortal = SubResource( 4 ) anims/fade_in = SubResource( 3 ) [connection signal="body_entered" from="." to="." method="_on_body_entered"] diff --git a/src/Contraptions/Triggers/ElevatorButton.gd b/src/Contraptions/Triggers/ElevatorButton.gd index 961e0d6..85b1c38 100644 --- a/src/Contraptions/Triggers/ElevatorButton.gd +++ b/src/Contraptions/Triggers/ElevatorButton.gd @@ -13,8 +13,6 @@ var activatable = false func _ready() -> void: get_back_timer.wait_time = elevator_time - elevator.get_node("./portal").frame = 1 - elevator.monitoring = false func _input(event: InputEvent) -> void: if activatable && Input.is_action_just_released("interact"): @@ -26,8 +24,6 @@ func _input(event: InputEvent) -> void: func selfActivate(): indicatorPlayer.play("onning") buttonPlayer.play("pushing") - elevator.get_node("./portal").frame = 0 - elevator.monitoring = true #TODO dis importante activatorArea.set_deferred("monitoring", false) $GetBackMusic.play() diff --git a/src/Environment/Grass/ShaderGrass.gd b/src/Environment/Grass/ShaderGrass.gd index 8bc49f7..94f4997 100644 --- a/src/Environment/Grass/ShaderGrass.gd +++ b/src/Environment/Grass/ShaderGrass.gd @@ -19,6 +19,9 @@ var is_idle_swinging var start_swing_time := 0.0 var begin_idle var time_since_last_exec := 0.0 + +var grass_sounds := ["res://assets/sounds/grass swish 1.ogg","res://assets/sounds/grass swish 2.ogg", +"res://assets/sounds/grass swish 3.ogg","res://assets/sounds/grass swish 4.ogg"] # var thread : Thread var saved_coeff:= 0.0 @@ -107,4 +110,8 @@ func grass_wave_update(delta: float) -> void: func _on_Area2D_body_entered(body: Node) -> void: - $AudioStreamPlayer2D.play() + var sound_index = round(rand_range(0,grass_sounds.size())) - 1 + if(body.is_in_group("player")): + GlobalAudio.play_scene_independent(grass_sounds[sound_index], "Effects", -22, true, 0, true, 1) + else: + $AudioStreamPlayer2D.play() diff --git a/src/Environment/Grass/ShaderGrass.tscn b/src/Environment/Grass/ShaderGrass.tscn index 7b4d996..c5fbfa0 100644 --- a/src/Environment/Grass/ShaderGrass.tscn +++ b/src/Environment/Grass/ShaderGrass.tscn @@ -78,6 +78,7 @@ uv = PoolVector2Array( 4.9375, 11.875, 5, 8.8125, 2.8125, 7, -0.375, 4.0625, 2.2 polygons = [ PoolIntArray( 0, 6, 7 ), PoolIntArray( 0, 1, 6 ), PoolIntArray( 1, 5, 6 ), PoolIntArray( 1, 2, 5 ), PoolIntArray( 2, 4, 5 ), PoolIntArray( 2, 3, 4 ) ] [node name="Sprite" type="Sprite" parent="."] +visible = false position = Vector2( 5.00909, 19.9567 ) z_index = -1 texture = ExtResource( 10 ) diff --git a/src/Levels/Level 0.1.tscn b/src/Levels/Level 0.1.tscn index 4ee1244..c92902e 100644 --- a/src/Levels/Level 0.1.tscn +++ b/src/Levels/Level 0.1.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=29 format=2] +[gd_scene load_steps=86 format=2] [ext_resource path="res://src/Levels/Templates/LevelTemplate.gd" type="Script" id=1] [ext_resource path="res://src/Environment/GreenHouseTiles.tres" type="TileSet" id=2] @@ -8,15 +8,55 @@ [ext_resource path="res://src/Utilities/LevelState.tscn" type="PackedScene" id=6] [ext_resource path="res://src/Actors/Blobby/Blobby.tscn" type="PackedScene" id=7] [ext_resource path="res://src/Contraptions/Portal/Portal.tscn" type="PackedScene" id=8] -[ext_resource path="res://src/Actors/BlobbyCam.tscn" type="PackedScene" id=9] +[ext_resource path="res://src/Actors/Emitter.gd" type="Script" id=9] [ext_resource path="res://src/Utilities/SignalManager.tscn" type="PackedScene" id=10] [ext_resource path="res://src/Actors/Friendlies/WhatAreFrog.tscn" type="PackedScene" id=11] [ext_resource path="res://src/Environment/Grass/ShaderGrass.tscn" type="PackedScene" id=12] +[ext_resource path="res://assets/Main Ship - Base - Very damaged.png" type="Texture" id=13] [ext_resource path="res://src/Utilities/SceneAudio.tscn" type="PackedScene" id=14] [ext_resource path="res://src/UserInterface/TutorialThingy.tscn" type="PackedScene" id=15] [ext_resource path="res://assets/effects/pixelDissolve.gdshader" type="Shader" id=16] [ext_resource path="res://assets/effects/noise.png" type="Texture" id=17] [ext_resource path="res://src/ObstacleObjects/Mine.tscn" type="PackedScene" id=18] +[ext_resource path="res://src/Actors/BlobbyCam.gd" type="Script" id=19] +[ext_resource path="res://assets/environment/decor/screen/Screen10.png" type="Texture" id=20] +[ext_resource path="res://assets/environment/decor/screen/Screen9.png" type="Texture" id=21] +[ext_resource path="res://assets/environment/decor/screen/Screen3.png" type="Texture" id=22] +[ext_resource path="res://assets/environment/decor/screen/Screen12.png" type="Texture" id=23] +[ext_resource path="res://src/Environment/LightingShaderMaterial.tres" type="Material" id=24] +[ext_resource path="res://assets/environment/decor/longductor/Longductor2.png" type="Texture" id=25] +[ext_resource path="res://assets/environment/decor/screen/Screen5.png" type="Texture" id=26] +[ext_resource path="res://assets/environment/decor/screen/Screen8.png" type="Texture" id=27] +[ext_resource path="res://assets/environment/decor/screen/Screen4.png" type="Texture" id=28] +[ext_resource path="res://assets/environment/decor/screen/Screen11.png" type="Texture" id=29] +[ext_resource path="res://assets/environment/background/Spaceship-Wall.png" type="Texture" id=30] +[ext_resource path="res://assets/environment/decor/screen/Screen7.png" type="Texture" id=31] +[ext_resource path="res://assets/environment/decor/longductor/Longductor4.png" type="Texture" id=32] +[ext_resource path="res://assets/environment/decor/longductor/Longductor8.png" type="Texture" id=33] +[ext_resource path="res://assets/environment/background/Spaceship-Wall-Lampsl.png" type="Texture" id=34] +[ext_resource path="res://assets/environment/decor/Robbit-Left.png" type="Texture" id=35] +[ext_resource path="res://assets/blobby/idle/blobby1.png" type="Texture" id=36] +[ext_resource path="res://assets/environment/decor/longductor/Longductor5.png" type="Texture" id=37] +[ext_resource path="res://assets/environment/decor/longductor/Longductor13.png" type="Texture" id=38] +[ext_resource path="res://assets/environment/decor/longductor/Longductor1.png" type="Texture" id=39] +[ext_resource path="res://assets/environment/decor/screen/Screen2.png" type="Texture" id=40] +[ext_resource path="res://assets/environment/decor/longductor/Longductor3.png" type="Texture" id=41] +[ext_resource path="res://assets/environment/decor/longductor/Longductor11.png" type="Texture" id=42] +[ext_resource path="res://assets/environment/background/starry-space-far.png" type="Texture" id=43] +[ext_resource path="res://assets/environment/decor/longductor/Longductor7.png" type="Texture" id=44] +[ext_resource path="res://assets/environment/decor/longductor/Longductor12.png" type="Texture" id=45] +[ext_resource path="res://assets/environment/decor/longductor/Longductor10.png" type="Texture" id=46] +[ext_resource path="res://assets/environment/decor/Robbit-Right.png" type="Texture" id=47] +[ext_resource path="res://assets/environment/decor/screen/Screen13.png" type="Texture" id=48] +[ext_resource path="res://assets/environment/background/starry-space-middle.png" type="Texture" id=49] +[ext_resource path="res://assets/environment/decor/screen/Screen14.png" type="Texture" id=50] +[ext_resource path="res://assets/environment/decor/longductor/Longductor14.png" type="Texture" id=51] +[ext_resource path="res://assets/environment/decor/screen/Screen6.png" type="Texture" id=52] +[ext_resource path="res://assets/environment/background/starry-space-near.png" type="Texture" id=53] +[ext_resource path="res://assets/environment/decor/longductor/Longductor6.png" type="Texture" id=54] +[ext_resource path="res://assets/environment/decor/longductor/Longductor9.png" type="Texture" id=55] +[ext_resource path="res://assets/environment/decor/screen/Screen1.png" type="Texture" id=56] +[ext_resource path="res://assets/environment/decor/Ceiling-Struct.png" type="Texture" id=57] [sub_resource type="Shader" id=15] code = "shader_type canvas_item; @@ -175,9 +215,859 @@ tracks/1/keys = { } ] } -[sub_resource type="AnimationNodeStateMachinePlayback" id=14] +[sub_resource type="Animation" id=5] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath(".:zoom") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0.75, 0.75 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath(".:limit_left") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -10000000 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath(".:limit_top") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -10000000 ] +} +tracks/3/type = "value" +tracks/3/path = NodePath(".:limit_right") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 10000000 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath(".:limit_bottom") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 10000000 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath(".:rotating") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} +tracks/6/type = "value" +tracks/6/path = NodePath(".:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath(".:position") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ) ] +} +tracks/8/type = "value" +tracks/8/path = NodePath(".:offset") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath(".:drag_margin_h_enabled") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/10/type = "value" +tracks/10/path = NodePath(".:drag_margin_v_enabled") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} -[sub_resource type="AnimationNodeStateMachinePlayback" id=5] +[sub_resource type="Animation" id=6] +resource_name = "deathCam" +length = 2.3 +step = 0.01 +tracks/0/type = "value" +tracks/0/path = NodePath(".:zoom") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 1.6 ), +"transitions": PoolRealArray( 1, 3.24901 ), +"update": 0, +"values": [ Vector2( 0.75, 0.75 ), Vector2( 0.001, 0.001 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath(".:limit_left") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0.01 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ -10000000 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath(".:limit_top") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0.02 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ -10000000 ] +} +tracks/3/type = "value" +tracks/3/path = NodePath(".:limit_right") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ 10000000 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath(".:limit_bottom") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0.59 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ 10000000 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath(".:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0.6, 1.6 ), +"transitions": PoolRealArray( 1, 0.120742 ), +"update": 0, +"values": [ 0.0, 360.0 ] +} +tracks/6/type = "method" +tracks/6/path = NodePath("../Blobby") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 2.3 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "respawn" +} ] +} +tracks/7/type = "value" +tracks/7/path = NodePath(".:offset") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, -6 ) ] +} +tracks/8/type = "value" +tracks/8/path = NodePath(".:drag_margin_h_enabled") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/9/type = "value" +tracks/9/path = NodePath(".:drag_margin_v_enabled") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=24] +resource_name = "deathCamJustZoom" +length = 2.3 +step = 0.01 +tracks/0/type = "value" +tracks/0/path = NodePath(".:zoom") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 1.16 ), +"transitions": PoolRealArray( 1, 3.24901 ), +"update": 0, +"values": [ Vector2( 0.75, 0.75 ), Vector2( 0.2, 0.2 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath(".:limit_left") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ -10000000 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath(".:limit_top") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ -10000000 ] +} +tracks/3/type = "value" +tracks/3/path = NodePath(".:limit_right") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ 10000000 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath(".:limit_bottom") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ 10000000 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath(".:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = false +tracks/5/keys = { +"times": PoolRealArray( 0.06, 1.61 ), +"transitions": PoolRealArray( 1, 0.120742 ), +"update": 0, +"values": [ 0.0, 360.0 ] +} +tracks/6/type = "method" +tracks/6/path = NodePath("../Blobby") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 1.1 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "respawn" +} ] +} +tracks/7/type = "value" +tracks/7/path = NodePath(".:offset") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, -6 ) ] +} +tracks/8/type = "value" +tracks/8/path = NodePath(".:drag_margin_h_enabled") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/9/type = "value" +tracks/9/path = NodePath(".:drag_margin_v_enabled") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=14] +resource_name = "deathCamLateRotation" +length = 2.3 +step = 0.01 +tracks/0/type = "value" +tracks/0/path = NodePath(".:zoom") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 1.6 ), +"transitions": PoolRealArray( 1, 3.24901 ), +"update": 0, +"values": [ Vector2( 0.75, 0.75 ), Vector2( 0.001, 0.001 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath(".:limit_left") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 1 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ -10000000 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath(".:limit_top") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 1 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ -10000000 ] +} +tracks/3/type = "value" +tracks/3/path = NodePath(".:limit_right") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 1 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ 10000000 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath(".:limit_bottom") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 1 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ 10000000 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath(".:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 1, 1.61 ), +"transitions": PoolRealArray( 1, 0.120742 ), +"update": 0, +"values": [ 0.0, 360.0 ] +} +tracks/6/type = "method" +tracks/6/path = NodePath("../Blobby") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 2.3 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "respawn" +} ] +} +tracks/7/type = "value" +tracks/7/path = NodePath(".:offset") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, -6 ) ] +} +tracks/8/type = "value" +tracks/8/path = NodePath(".:drag_margin_h_enabled") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/9/type = "value" +tracks/9/path = NodePath(".:drag_margin_v_enabled") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=23] +resource_name = "justRespawn" + +[sub_resource type="Animation" id=25] +resource_name = "shiftingCenter" +length = 0.6 +tracks/0/type = "value" +tracks/0/path = NodePath(".:offset") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.6 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ), Vector2( 0, 0 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath(".:limit_left") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = false +tracks/1/keys = { +"times": PoolRealArray( 0, 0.6 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ -10000000, -10000000 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath(".:limit_top") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = false +tracks/2/keys = { +"times": PoolRealArray( 0, 0.6 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ -10000000, -10000000 ] +} +tracks/3/type = "value" +tracks/3/path = NodePath(".:limit_right") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = false +tracks/3/keys = { +"times": PoolRealArray( 0, 0.6 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 10000000, 10000000 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath(".:limit_bottom") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = false +tracks/4/keys = { +"times": PoolRealArray( 0, 0.6 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 10000000, 10000000 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath(".:drag_margin_left") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = false +tracks/5/keys = { +"times": PoolRealArray( 0, 0.6 ), +"transitions": PoolRealArray( 1, 0.5 ), +"update": 0, +"values": [ 0.2, 0.05 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath(".:drag_margin_right") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = false +tracks/6/keys = { +"times": PoolRealArray( 0, 0.6 ), +"transitions": PoolRealArray( 1, 0.5 ), +"update": 0, +"values": [ 0.2, 0.05 ] +} + +[sub_resource type="Animation" id=26] +resource_name = "shiftingLeft" +length = 0.6 +tracks/0/type = "value" +tracks/0/path = NodePath(".:offset") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.6 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ), Vector2( 0, 0 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath(".:limit_left") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = false +tracks/1/keys = { +"times": PoolRealArray( 0, 0.6 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ -10000000, -10000000 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath(".:drag_margin_left") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = false +tracks/2/keys = { +"times": PoolRealArray( 0, 0.6 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.2, 0.05 ] +} + +[sub_resource type="Animation" id=27] +resource_name = "shiftingRight" +length = 0.6 +tracks/0/type = "value" +tracks/0/path = NodePath(".:offset") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.6 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ), Vector2( 0, 0 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath(".:limit_right") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = false +tracks/1/keys = { +"times": PoolRealArray( 0, 0.6 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 10000000, 10000000 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath(".:drag_margin_right") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = false +tracks/2/keys = { +"times": PoolRealArray( 0, 0.6 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.2, 0.05 ] +} + +[sub_resource type="Animation" id=28] +resource_name = "shiftingUp" +length = 0.6 +tracks/0/type = "value" +tracks/0/path = NodePath(".:offset") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.6 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ), Vector2( 0, 0 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath(".:limit_right") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = false +tracks/1/keys = { +"times": PoolRealArray( 0, 0.6 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 10000000, 10000000 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath(".:drag_margin_right") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = false +tracks/2/keys = { +"times": PoolRealArray( 0, 0.6 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.2, 0.05 ] +} + +[sub_resource type="Animation" id=29] +resource_name = "Pulsing" +length = 3.33 +loop = true +step = 0.05 +tracks/0/type = "value" +tracks/0/path = NodePath("Emitter3:radius") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 1.65 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 128, 256 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Emitter4:radius") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 1.65 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 128, 256 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Emitter5:radius") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 1.65 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 128, 256 ] +} + +[sub_resource type="Animation" id=30] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Emitter3:radius") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 128 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Emitter4:radius") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 128 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Emitter5:radius") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 128 ] +} + +[sub_resource type="Gradient" id=20] +interpolation_mode = 2 +offsets = PoolRealArray( 0, 0.797721 ) +colors = PoolColorArray( 0, 0, 0, 0, 0, 0, 0, 0.4 ) + +[sub_resource type="GradientTexture2D" id=19] +gradient = SubResource( 20 ) +width = 640 +height = 360 +fill = 1 +fill_from = Vector2( 0.51066, 0.231548 ) +fill_to = Vector2( 1, 1 ) + +[sub_resource type="Gradient" id=21] +interpolation_mode = 2 +offsets = PoolRealArray( 0, 0.797721 ) +colors = PoolColorArray( 0, 0, 0, 0, 0, 0, 0, 0.4 ) + +[sub_resource type="GradientTexture2D" id=22] +gradient = SubResource( 21 ) +width = 1280 +height = 360 +fill = 1 +fill_from = Vector2( 0.507438, 0.866468 ) +fill_to = Vector2( 1, 0.994443 ) + +[sub_resource type="SpriteFrames" id=31] +animations = [ { +"frames": [ ExtResource( 39 ), ExtResource( 25 ), ExtResource( 41 ), ExtResource( 32 ), ExtResource( 37 ), ExtResource( 54 ), ExtResource( 44 ), ExtResource( 33 ), ExtResource( 55 ), ExtResource( 46 ), ExtResource( 42 ), ExtResource( 45 ), ExtResource( 38 ), ExtResource( 51 ) ], +"loop": true, +"name": "default", +"speed": 5.0 +} ] + +[sub_resource type="SpriteFrames" id=32] +animations = [ { +"frames": [ ExtResource( 56 ), ExtResource( 40 ), ExtResource( 22 ), ExtResource( 28 ), ExtResource( 26 ), ExtResource( 52 ), ExtResource( 31 ), ExtResource( 27 ), ExtResource( 21 ), ExtResource( 20 ), ExtResource( 29 ), ExtResource( 23 ), ExtResource( 48 ), ExtResource( 50 ) ], +"loop": true, +"name": "default", +"speed": 5.0 +} ] + +[sub_resource type="AnimationNodeStateMachinePlayback" id=33] + +[sub_resource type="AnimationNodeStateMachinePlayback" id=34] [node name="1 Tutorial Level" type="Node2D"] physics_interpolation_mode = 2 @@ -267,9 +1157,169 @@ position = Vector2( -114, 43 ) [node name="CollisionShape2D" parent="Tutorials/RightTut/StartTutorialArea" index="0"] position = Vector2( -24.5, 0 ) -[node name="BlobbyCam" parent="." instance=ExtResource( 9 )] +[node name="BlobbyCam" type="Camera2D" parent="."] +physics_interpolation_mode = 2 unique_name_in_owner = true -process_mode = 1 +material = ExtResource( 24 ) +z_index = 3 +rotating = true +current = true +zoom = Vector2( 0.75, 0.75 ) +drag_margin_h_enabled = true +drag_margin_v_enabled = true +drag_margin_left = 0.08 +drag_margin_top = 0.16 +drag_margin_right = 0.08 +drag_margin_bottom = 0.16 +editor_draw_drag_margin = true +script = ExtResource( 19 ) + +[node name="CameraAnimationPlayer" type="AnimationPlayer" parent="BlobbyCam"] +anims/RESET = SubResource( 5 ) +anims/deathCam = SubResource( 6 ) +anims/deathCamJustZoom = SubResource( 24 ) +anims/deathCamLateRotation = SubResource( 14 ) +anims/justRespawn = SubResource( 23 ) +anims/shiftingCenter = SubResource( 25 ) +anims/shiftingLeft = SubResource( 26 ) +anims/shiftingRight = SubResource( 27 ) +anims/shiftingUp = SubResource( 28 ) + +[node name="LightAnimationPlayer" type="AnimationPlayer" parent="BlobbyCam"] +root_node = NodePath("../ParallaxBackground/ParallaxLayer4") +anims/Pulsing = SubResource( 29 ) +anims/RESET = SubResource( 30 ) + +[node name="ParallaxBackground" type="ParallaxBackground" parent="BlobbyCam"] +layer = -2 + +[node name="ParallaxLayer" type="ParallaxLayer" parent="BlobbyCam/ParallaxBackground"] +z_index = -1 +motion_scale = Vector2( 0, 0 ) + +[node name="Sprite3" type="Sprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer"] +texture = ExtResource( 43 ) + +[node name="ParallaxLayer2" type="ParallaxLayer" parent="BlobbyCam/ParallaxBackground"] +z_index = -1 +motion_scale = Vector2( 0.001, 0.001 ) + +[node name="Sprite" type="Sprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer2"] +texture = ExtResource( 49 ) + +[node name="ParallaxLayer3" type="ParallaxLayer" parent="BlobbyCam/ParallaxBackground"] +z_index = -1 +motion_scale = Vector2( 0.002, 0.002 ) + +[node name="Sprite" type="Sprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer3"] +texture = ExtResource( 53 ) + +[node name="ParallaxLayer4" type="ParallaxLayer" parent="BlobbyCam/ParallaxBackground"] +motion_scale = Vector2( 0.01, 0.01 ) + +[node name="Sprite" type="Sprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer4"] +material = ExtResource( 24 ) +z_index = -1 +texture = ExtResource( 30 ) + +[node name="Emitter3" type="Sprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer4" groups=["light"]] +visible = false +position = Vector2( -154, 14 ) +texture = ExtResource( 36 ) +script = ExtResource( 9 ) +color = Color( 1, 0, 0, 0.615686 ) + +[node name="Emitter4" type="Sprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer4" groups=["light"]] +visible = false +position = Vector2( 1, 14 ) +texture = ExtResource( 36 ) +script = ExtResource( 9 ) +color = Color( 1, 0, 0, 0.615686 ) + +[node name="Emitter5" type="Sprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer4" groups=["light"]] +visible = false +position = Vector2( 154, 14 ) +texture = ExtResource( 36 ) +script = ExtResource( 9 ) +color = Color( 1, 0, 0, 0.615686 ) + +[node name="Sprite2" type="Sprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer4"] +material = ExtResource( 24 ) +texture = ExtResource( 34 ) + +[node name="Sprite3" type="Sprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer4"] +position = Vector2( -148, -60 ) +rotation = 3.00895 +scale = Vector2( 1.3, 1.3 ) +z_index = 3 +texture = ExtResource( 13 ) + +[node name="ColorRect" type="ColorRect" parent="BlobbyCam/ParallaxBackground/ParallaxLayer4/Sprite3"] +margin_left = -17.0 +margin_top = -15.0 +margin_right = 19.0 +margin_bottom = 15.0 +color = Color( 0, 0, 0, 0.235294 ) + +[node name="TextureRect" type="TextureRect" parent="BlobbyCam/ParallaxBackground/ParallaxLayer4"] +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -583.0 +margin_top = -35.0 +margin_right = 567.0 +margin_bottom = 291.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +texture = SubResource( 19 ) +expand = true +stretch_mode = 1 + +[node name="TextureRect2" type="TextureRect" parent="BlobbyCam/ParallaxBackground/ParallaxLayer4"] +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -583.0 +margin_top = -412.0 +margin_right = 567.0 +margin_bottom = -86.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +texture = SubResource( 22 ) +expand = true +stretch_mode = 1 + +[node name="ParallaxLayer5" type="ParallaxLayer" parent="BlobbyCam/ParallaxBackground"] +visible = false +motion_scale = Vector2( 0.05, 0.05 ) + +[node name="Sprite" type="Sprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5"] +z_index = -1 +texture = ExtResource( 57 ) + +[node name="Sprite2" type="Sprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5"] +z_index = -1 +texture = ExtResource( 35 ) + +[node name="Sprite3" type="Sprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5"] +z_index = -1 +texture = ExtResource( 47 ) + +[node name="Sprite4" type="Sprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5"] +z_index = -1 +texture = ExtResource( 47 ) + +[node name="AnimatedSprite" type="AnimatedSprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5"] +frames = SubResource( 31 ) +playing = true + +[node name="AnimatedSprite2" type="AnimatedSprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5"] +frames = SubResource( 32 ) +playing = true [node name="Blobby" parent="." instance=ExtResource( 7 )] unique_name_in_owner = true @@ -277,10 +1327,10 @@ position = Vector2( -70, 1 ) scale = Vector2( 0.878906, 0.936025 ) [node name="BlobbySprite" parent="Blobby" index="5"] -frame = 10 +frame = 6 [node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"] -parameters/playback = SubResource( 14 ) +parameters/playback = SubResource( 33 ) parameters/jumpStretching/blend_position = 1 parameters/landStretching/blend_position = 1 @@ -289,7 +1339,7 @@ position = Vector2( 926, -25 ) [node name="AnimationTree" parent="WhatAreFrog/FrogSprite" index="1"] root_motion_track = NodePath(".") -parameters/playback = SubResource( 5 ) +parameters/playback = SubResource( 34 ) [node name="TileMap" type="TileMap" parent="."] unique_name_in_owner = true @@ -319,6 +1369,7 @@ format = 1 [node name="Portal" parent="." instance=ExtResource( 8 )] position = Vector2( 952, -32 ) next_scene = "res://src/Levels/Level 0.2.tscn" +is_active = true [node name="Decor" type="Node2D" parent="."] @@ -644,6 +1695,5 @@ position = Vector2( 24, -104 ) [editable path="Tutorials/JumpTut"] [editable path="Tutorials/LeftTut"] [editable path="Tutorials/RightTut"] -[editable path="BlobbyCam"] [editable path="Blobby"] [editable path="WhatAreFrog"] diff --git a/src/Levels/Level 0.2.tscn b/src/Levels/Level 0.2.tscn index be7def6..138ff90 100644 --- a/src/Levels/Level 0.2.tscn +++ b/src/Levels/Level 0.2.tscn @@ -1150,6 +1150,9 @@ unique_name_in_owner = true position = Vector2( -156, -51 ) scale = Vector2( 0.878906, 0.936025 ) +[node name="BlobbySprite" parent="Blobby" index="5"] +frame = 6 + [node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"] parameters/playback = SubResource( 6 ) parameters/jumpStretching/blend_position = 1 diff --git a/src/Levels/Level 4.tscn b/src/Levels/Level 4.tscn index 1b10694..6ae0851 100644 --- a/src/Levels/Level 4.tscn +++ b/src/Levels/Level 4.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=18 format=2] +[gd_scene load_steps=19 format=2] [ext_resource path="res://src/Environment/GreenHouseTiles.tres" type="TileSet" id=1] [ext_resource path="res://src/Utilities/SignalManager.tscn" type="PackedScene" id=2] @@ -13,6 +13,7 @@ [ext_resource path="res://src/Contraptions/Portal/Portal.tscn" type="PackedScene" id=11] [ext_resource path="res://assets/environment/decor/platform-plants.png" type="Texture" id=12] [ext_resource path="res://src/Platforms/FlyingLaserCutter.tscn" type="PackedScene" id=13] +[ext_resource path="res://src/ObstacleObjects/Mine.tscn" type="PackedScene" id=14] [sub_resource type="Shader" id=15] code = "shader_type canvas_item; @@ -117,15 +118,19 @@ drag_margin_bottom = 0.3 [node name="Blobby" parent="." instance=ExtResource( 8 )] unique_name_in_owner = true -position = Vector2( -70, -1.90735e-06 ) +position = Vector2( -180, 64 ) scale = Vector2( 0.878906, 0.936025 ) [node name="BlobbySprite" parent="Blobby" index="5"] -frame = 7 +frame = 5 [node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"] parameters/playback = SubResource( 6 ) +[node name="Mine" parent="." instance=ExtResource( 14 )] +position = Vector2( -128, 72 ) +is_armed = true + [node name="TileMap" type="TileMap" parent="."] unique_name_in_owner = true tile_set = ExtResource( 1 ) @@ -136,7 +141,7 @@ collision_layer = 8 collision_mask = 8 bake_navigation = true format = 1 -tile_data = PoolIntArray( -393230, 5, 65540, -393229, 5, 10, -393228, 5, 10, -393227, 5, 10, -393226, 5, 10, -393225, 5, 10, -393224, 5, 10, -393223, 5, 10, -393222, 5, 10, -393221, 5, 10, -393220, 5, 10, -393219, 5, 10, -393218, 5, 10, -393217, 5, 10, -458752, 5, 10, -458751, 5, 10, -458750, 5, 10, -458749, 5, 10, -458748, 5, 10, -458747, 5, 10, -458746, 5, 10, -458745, 5, 10, -458744, 5, 10, -458743, 5, 10, -458742, 5, 10, -458741, 5, 10, -458740, 5, 10, -458739, 5, 10, -458738, 5, 10, -458737, 5, 10, -458736, 5, 10, -458735, 5, 10, -458734, 5, 10, -458733, 5, 10, -458732, 5, 10, -458731, 5, 10, -458730, 5, 10, -458729, 5, 10, -458728, 5, 10, -458727, 5, 10, -458726, 5, 10, -458725, 5, 10, -458724, 5, 10, -458723, 5, 10, -458722, 5, 10, -458721, 5, 10, -458720, 5, 10, -458719, 5, 10, -458718, 5, 10, -458717, 5, 10, -458716, 5, 10, -458715, 5, 10, -458714, 5, 10, -458713, 5, 10, -458712, 5, 10, -458711, 5, 10, -458710, 5, 10, -458709, 5, 10, -458708, 5, 10, -458707, 5, 65541, -327694, 5, 7, -327693, 7, 0, -327692, 7, 0, -327691, 7, 0, -327690, 7, 0, -327689, 7, 0, -327688, 7, 0, -327687, 7, 0, -327686, 7, 0, -327685, 7, 0, -327684, 7, 0, -327683, 7, 0, -327682, 7, 0, -327681, 7, 0, -393216, 7, 0, -393215, 7, 0, -393214, 7, 0, -393213, 7, 0, -393212, 7, 0, -393211, 7, 0, -393210, 7, 0, -393209, 7, 0, -393208, 7, 0, -393207, 7, 0, -393206, 7, 0, -393205, 7, 0, -393204, 7, 0, -393203, 7, 0, -393202, 7, 0, -393201, 7, 0, -393200, 7, 0, -393199, 7, 0, -393198, 7, 0, -393171, 5, 6, -262158, 5, 7, -262157, 7, 0, -262156, 7, 0, -262155, 7, 0, -262154, 7, 0, -262153, 7, 0, -262152, 7, 0, -262151, 7, 0, -262150, 7, 0, -262149, 7, 0, -262148, 7, 0, -262147, 7, 0, -262146, 7, 0, -262145, 7, 0, -327680, 7, 0, -327679, 7, 0, -327678, 7, 0, -327677, 7, 0, -327676, 7, 0, -327675, 7, 0, -327674, 7, 0, -327673, 7, 0, -327672, 7, 0, -327671, 7, 0, -327670, 7, 0, -327669, 7, 0, -327668, 7, 0, -327667, 7, 0, -327666, 7, 0, -327665, 7, 0, -327664, 7, 0, -327663, 7, 0, -327662, 7, 0, -327635, 5, 6, -196622, 5, 7, -196621, 7, 0, -196620, 7, 0, -196619, 7, 0, -196618, 7, 0, -196617, 7, 0, -196616, 7, 0, -196615, 7, 0, -196614, 7, 0, -196613, 7, 0, -196612, 7, 0, -196611, 7, 0, -196610, 7, 0, -196609, 7, 0, -262144, 7, 0, -262143, 7, 0, -262142, 7, 0, -262141, 7, 0, -262140, 7, 0, -262139, 7, 0, -262138, 7, 0, -262137, 7, 0, -262136, 7, 0, -262135, 7, 0, -262134, 7, 0, -262133, 7, 0, -262132, 7, 0, -262131, 7, 0, -262130, 7, 0, -262129, 7, 0, -262128, 7, 0, -262127, 7, 0, -262126, 7, 0, -262099, 5, 6, -131086, 5, 7, -131085, 7, 0, -131084, 7, 0, -131083, 7, 0, -131082, 7, 0, -131081, 7, 0, -131080, 7, 0, -131079, 7, 0, -131078, 7, 0, -131077, 7, 0, -131076, 7, 0, -131075, 7, 0, -131074, 7, 0, -131073, 7, 0, -196608, 7, 0, -196607, 7, 0, -196606, 7, 0, -196605, 7, 0, -196604, 7, 0, -196603, 7, 0, -196602, 7, 0, -196601, 7, 0, -196600, 7, 0, -196599, 7, 0, -196598, 7, 0, -196597, 7, 0, -196596, 7, 0, -196595, 7, 0, -196594, 7, 0, -196593, 7, 0, -196592, 7, 0, -196591, 7, 0, -196590, 7, 0, -196563, 5, 6, -65550, 5, 7, -65549, 7, 0, -65548, 7, 0, -65547, 7, 0, -65546, 7, 0, -65545, 7, 0, -65544, 7, 0, -65543, 7, 0, -65542, 7, 0, -65541, 7, 0, -65540, 7, 0, -65539, 7, 0, -65538, 7, 0, -65537, 7, 0, -131072, 7, 0, -131071, 7, 0, -131070, 7, 0, -131069, 7, 0, -131068, 7, 0, -131067, 7, 0, -131066, 7, 0, -131065, 7, 0, -131064, 7, 0, -131063, 7, 0, -131062, 7, 0, -131061, 7, 0, -131060, 7, 0, -131059, 7, 0, -131058, 7, 0, -131057, 7, 0, -131056, 7, 0, -131055, 7, 0, -131054, 7, 0, -131027, 5, 6, -14, 5, 7, -13, 7, 0, -12, 7, 0, -11, 7, 0, -10, 7, 0, -9, 7, 0, -8, 7, 0, -7, 7, 0, -6, 7, 0, -5, 7, 0, -4, 7, 0, -3, 7, 0, -2, 7, 0, -1, 7, 0, -65536, 7, 0, -65535, 7, 0, -65534, 7, 0, -65533, 7, 0, -65532, 7, 0, -65531, 7, 0, -65530, 7, 0, -65529, 7, 0, -65528, 7, 0, -65527, 7, 0, -65526, 7, 0, -65525, 7, 0, -65524, 7, 0, -65523, 7, 0, -65522, 7, 0, -65521, 7, 0, -65520, 7, 0, -65519, 7, 0, -65518, 7, 0, -65491, 5, 6, 65522, 5, 7, 65523, 7, 0, 65524, 7, 0, 65525, 7, 0, 65526, 7, 0, 65527, 7, 0, 65528, 7, 0, 65529, 7, 0, 65530, 7, 0, 65531, 7, 0, 65532, 7, 0, 65533, 7, 0, 65534, 7, 0, 65535, 7, 0, 0, 7, 0, 1, 7, 0, 2, 7, 0, 3, 7, 0, 4, 7, 0, 5, 7, 0, 6, 7, 0, 7, 7, 0, 8, 7, 0, 9, 7, 0, 10, 7, 0, 11, 7, 0, 12, 7, 0, 13, 7, 0, 14, 7, 0, 15, 7, 0, 16, 7, 0, 17, 7, 0, 18, 7, 0, 45, 5, 6, 131058, 5, 7, 131059, 7, 0, 131060, 7, 0, 131061, 7, 0, 131062, 7, 0, 131063, 7, 0, 131064, 7, 0, 131065, 7, 0, 131066, 7, 0, 131067, 7, 0, 131068, 7, 0, 131069, 7, 0, 131070, 7, 0, 131071, 7, 0, 65536, 7, 0, 65537, 7, 0, 65538, 7, 0, 65539, 7, 0, 65540, 7, 0, 65541, 7, 0, 65542, 7, 0, 65543, 7, 0, 65544, 7, 0, 65545, 7, 0, 65546, 7, 0, 65547, 7, 0, 65548, 7, 0, 65549, 7, 0, 65550, 7, 0, 65551, 7, 0, 65552, 7, 0, 65553, 7, 0, 65554, 7, 0, 65581, 5, 6, 196594, 5, 7, 196595, 7, 0, 196596, 7, 0, 196597, 7, 0, 196598, 7, 0, 196599, 7, 0, 196600, 7, 0, 196601, 7, 0, 196602, 7, 0, 196603, 7, 0, 196604, 7, 0, 196605, 7, 0, 196606, 7, 0, 196607, 7, 0, 131072, 7, 0, 131073, 7, 0, 131074, 7, 0, 131075, 7, 0, 131076, 7, 0, 131077, 7, 0, 131078, 7, 0, 131079, 7, 0, 131080, 7, 0, 131081, 7, 0, 131082, 7, 0, 131083, 7, 0, 131084, 7, 0, 131085, 7, 0, 131086, 7, 0, 131087, 7, 0, 131088, 7, 0, 131089, 7, 0, 131090, 7, 0, 131117, 5, 6, 262130, 5, 7, 262131, 7, 0, 262132, 7, 0, 262133, 7, 0, 262134, 7, 0, 262135, 7, 0, 262136, 7, 0, 262137, 7, 0, 262138, 7, 0, 262139, 7, 0, 262140, 7, 0, 262141, 7, 0, 262142, 7, 0, 262143, 7, 0, 196608, 7, 0, 196609, 7, 0, 196610, 7, 0, 196611, 7, 0, 196612, 7, 0, 196613, 7, 0, 196614, 7, 0, 196615, 7, 0, 196616, 7, 0, 196617, 7, 0, 196618, 7, 0, 196619, 7, 0, 196620, 7, 0, 196621, 7, 0, 196622, 7, 0, 196623, 7, 0, 196624, 7, 0, 196625, 7, 0, 196626, 7, 0, 196653, 5, 6, 327666, 5, 7, 327667, 7, 0, 327668, 7, 0, 327669, 7, 0, 327670, 7, 0, 327671, 7, 0, 327672, 7, 0, 327673, 7, 0, 327674, 7, 0, 327675, 7, 0, 327676, 7, 0, 327677, 7, 0, 327678, 7, 0, 327679, 7, 0, 262144, 7, 0, 262145, 7, 0, 262146, 7, 0, 262147, 7, 0, 262148, 7, 0, 262149, 7, 0, 262150, 7, 0, 262151, 7, 0, 262152, 7, 0, 262153, 7, 0, 262154, 7, 0, 262155, 7, 0, 262156, 7, 0, 262157, 7, 0, 262158, 7, 0, 262159, 7, 0, 262160, 7, 0, 262161, 7, 0, 262162, 7, 0, 262189, 5, 6, 393202, 5, 7, 393203, 7, 0, 393204, 7, 0, 393205, 7, 0, 393206, 7, 0, 393207, 7, 0, 393208, 7, 0, 393209, 7, 0, 393210, 7, 0, 393211, 7, 0, 393212, 7, 0, 393213, 7, 0, 393214, 7, 0, 393215, 7, 0, 327680, 7, 0, 327681, 7, 0, 327682, 7, 0, 327683, 7, 0, 327684, 7, 0, 327685, 7, 0, 327686, 7, 0, 327687, 7, 0, 327688, 7, 0, 327689, 7, 0, 327690, 7, 0, 327691, 7, 0, 327692, 7, 0, 327693, 7, 0, 327694, 7, 0, 327695, 7, 0, 327696, 7, 0, 327697, 7, 0, 327698, 7, 0, 327725, 5, 6, 458738, 5, 7, 458739, 7, 0, 458740, 7, 0, 458741, 7, 0, 458742, 7, 0, 458743, 7, 0, 458744, 7, 0, 458745, 7, 0, 458746, 7, 0, 458747, 7, 0, 458748, 7, 0, 458749, 7, 0, 458750, 7, 0, 458751, 7, 0, 393216, 7, 0, 393217, 7, 0, 393218, 7, 0, 393219, 7, 0, 393220, 7, 0, 393221, 7, 0, 393222, 7, 0, 393223, 7, 0, 393224, 7, 0, 393225, 7, 0, 393226, 7, 0, 393227, 7, 0, 393228, 7, 0, 393229, 7, 0, 393230, 7, 0, 393231, 7, 0, 393232, 7, 0, 393233, 7, 0, 393234, 7, 0, 393261, 5, 6, 524274, 5, 65538, 524275, 5, 2, 524276, 5, 2, 524277, 5, 2, 524278, 5, 2, 524279, 5, 2, 524280, 5, 2, 524281, 5, 2, 524282, 5, 2, 524283, 5, 2, 524284, 5, 2, 524285, 5, 2, 524286, 5, 2, 524287, 5, 2, 458752, 5, 2, 458753, 5, 2, 458754, 5, 2, 458755, 5, 2, 458756, 5, 2, 458757, 5, 2, 458758, 5, 2, 458759, 5, 2, 458760, 5, 2, 458761, 5, 2, 458762, 5, 2, 458763, 5, 2, 458764, 5, 2, 458765, 5, 2, 458766, 5, 2, 458767, 5, 2, 458768, 5, 2, 458769, 5, 2, 458770, 5, 2, 458771, 5, 2, 458772, 5, 2, 458773, 5, 2, 458774, 5, 2, 458775, 5, 2, 458776, 5, 2, 458777, 5, 2, 458778, 5, 2, 458779, 5, 2, 458780, 5, 2, 458781, 5, 2, 458782, 5, 2, 458783, 5, 2, 458784, 5, 2, 458785, 5, 2, 458786, 5, 2, 458787, 5, 2, 458788, 5, 2, 458789, 5, 2, 458790, 5, 2, 458791, 5, 2, 458792, 5, 2, 458793, 5, 2, 458794, 5, 2, 458795, 5, 2, 458796, 5, 2, 458797, 5, 65539 ) +tile_data = PoolIntArray( -393230, 5, 65540, -393229, 5, 10, -393228, 5, 10, -393227, 5, 10, -393226, 5, 10, -393225, 5, 10, -393224, 5, 10, -393223, 5, 10, -393222, 5, 10, -393221, 5, 10, -393220, 5, 10, -393219, 5, 10, -393218, 5, 10, -393217, 5, 10, -458752, 5, 10, -458751, 5, 10, -458750, 5, 10, -458749, 5, 10, -458748, 5, 10, -458747, 5, 10, -458746, 5, 10, -458745, 5, 10, -458744, 5, 10, -458743, 5, 10, -458742, 5, 10, -458741, 5, 10, -458740, 5, 10, -458739, 5, 10, -458738, 5, 10, -458737, 5, 10, -458736, 5, 10, -458735, 5, 10, -458734, 5, 10, -458733, 5, 10, -458732, 5, 10, -458731, 5, 10, -458730, 5, 10, -458729, 5, 10, -458728, 5, 10, -458727, 5, 10, -458726, 5, 10, -458725, 5, 10, -458724, 5, 10, -458723, 5, 10, -458722, 5, 10, -458721, 5, 10, -458720, 5, 10, -458719, 5, 10, -458718, 5, 10, -458717, 5, 10, -458716, 5, 10, -458715, 5, 10, -458714, 5, 10, -458713, 5, 10, -458712, 5, 10, -458711, 5, 10, -458710, 5, 10, -458709, 5, 10, -458708, 5, 10, -458707, 5, 65541, -327694, 5, 7, -327693, 7, 0, -327692, 7, 0, -327691, 7, 0, -327690, 7, 0, -327689, 7, 0, -327688, 7, 0, -327687, 7, 0, -327686, 7, 0, -327685, 7, 0, -327684, 7, 0, -327683, 7, 0, -327682, 7, 0, -327681, 7, 0, -393216, 7, 0, -393215, 7, 0, -393214, 7, 0, -393213, 7, 0, -393212, 7, 0, -393211, 7, 0, -393210, 7, 0, -393209, 7, 0, -393208, 7, 0, -393207, 7, 0, -393206, 7, 0, -393205, 7, 0, -393204, 7, 0, -393203, 7, 0, -393202, 7, 0, -393201, 7, 0, -393200, 7, 0, -393199, 7, 0, -393198, 7, 0, -393184, 5, 3, -393183, 5, 3, -393171, 5, 6, -262158, 5, 7, -262157, 7, 0, -262156, 7, 0, -262155, 7, 0, -262154, 7, 0, -262153, 7, 0, -262152, 7, 0, -262151, 7, 0, -262150, 7, 0, -262149, 7, 0, -262148, 7, 0, -262147, 7, 0, -262146, 7, 0, -262145, 7, 0, -327680, 7, 0, -327679, 7, 0, -327678, 7, 0, -327677, 7, 0, -327676, 7, 0, -327675, 7, 0, -327674, 7, 0, -327673, 7, 0, -327672, 7, 0, -327671, 7, 0, -327670, 7, 0, -327669, 7, 0, -327668, 7, 0, -327667, 7, 0, -327666, 7, 0, -327665, 7, 0, -327664, 7, 0, -327663, 7, 0, -327662, 7, 0, -327648, 5, 3, -327647, 5, 3, -327635, 5, 6, -196622, 5, 7, -196621, 7, 0, -196620, 7, 0, -196619, 7, 0, -196618, 7, 0, -196617, 7, 0, -196616, 7, 0, -196615, 7, 0, -196614, 7, 0, -196613, 7, 0, -196612, 7, 0, -196611, 7, 0, -196610, 7, 0, -196609, 7, 0, -262144, 7, 0, -262143, 7, 0, -262142, 7, 0, -262141, 7, 0, -262140, 7, 0, -262139, 7, 0, -262138, 7, 0, -262137, 7, 0, -262136, 7, 0, -262135, 7, 0, -262134, 7, 0, -262133, 7, 0, -262132, 7, 0, -262131, 7, 0, -262130, 7, 0, -262129, 7, 0, -262128, 7, 0, -262127, 7, 0, -262126, 7, 0, -262112, 5, 3, -262111, 5, 3, -262099, 5, 6, -131086, 5, 7, -131085, 7, 0, -131084, 7, 0, -131083, 7, 0, -131082, 7, 0, -131081, 7, 0, -131080, 7, 0, -131079, 7, 0, -131078, 7, 0, -131077, 7, 0, -131076, 7, 0, -131075, 7, 0, -131074, 7, 0, -131073, 7, 0, -196608, 7, 0, -196607, 7, 0, -196606, 7, 0, -196605, 7, 0, -196604, 7, 0, -196603, 7, 0, -196602, 7, 0, -196601, 7, 0, -196600, 7, 0, -196599, 7, 0, -196598, 7, 0, -196597, 7, 0, -196596, 7, 0, -196595, 7, 0, -196594, 7, 0, -196593, 7, 0, -196592, 7, 0, -196591, 7, 0, -196590, 7, 0, -196576, 5, 3, -196575, 5, 3, -196563, 5, 6, -65550, 5, 7, -65549, 7, 0, -65548, 7, 0, -65547, 7, 0, -65546, 7, 0, -65545, 7, 0, -65544, 7, 0, -65543, 7, 0, -65542, 7, 0, -65541, 7, 0, -65540, 7, 0, -65539, 7, 0, -65538, 7, 0, -65537, 7, 0, -131072, 7, 0, -131071, 7, 0, -131070, 7, 0, -131069, 7, 0, -131068, 7, 0, -131067, 7, 0, -131066, 7, 0, -131065, 7, 0, -131064, 7, 0, -131063, 7, 0, -131062, 7, 0, -131061, 7, 0, -131060, 7, 0, -131059, 7, 0, -131058, 7, 0, -131057, 7, 0, -131056, 7, 0, -131055, 7, 0, -131054, 7, 0, -131040, 5, 3, -131039, 5, 3, -131027, 5, 6, -14, 5, 7, -13, 7, 0, -12, 7, 0, -11, 7, 0, -10, 7, 0, -9, 7, 0, -8, 7, 0, -7, 7, 0, -6, 7, 0, -5, 7, 0, -4, 7, 0, -3, 7, 0, -2, 7, 0, -1, 7, 0, -65536, 7, 0, -65535, 7, 0, -65534, 7, 0, -65533, 7, 0, -65532, 7, 0, -65531, 7, 0, -65530, 7, 0, -65529, 7, 0, -65528, 7, 0, -65527, 7, 0, -65526, 7, 0, -65525, 7, 0, -65524, 7, 0, -65523, 7, 0, -65522, 7, 0, -65521, 7, 0, -65520, 7, 0, -65519, 7, 0, -65518, 7, 0, -65504, 5, 3, -65503, 5, 3, -65491, 5, 6, 65520, 5, 7, 65521, 5, 10, 65522, 5, 10, 2, 7, 0, 3, 7, 0, 4, 7, 0, 5, 7, 0, 6, 7, 0, 7, 7, 0, 8, 7, 0, 9, 7, 0, 10, 7, 0, 11, 7, 0, 12, 7, 0, 13, 7, 0, 14, 7, 0, 15, 7, 0, 16, 7, 0, 17, 7, 0, 18, 7, 0, 26, 5, 1, 27, 5, 1, 28, 5, 1, 32, 5, 3, 33, 5, 3, 34, 5, 3, 37, 5, 3, 38, 5, 3, 39, 5, 3, 40, 5, 3, 41, 5, 3, 42, 5, 3, 43, 5, 3, 44, 5, 3, 45, 5, 6, 131056, 5, 7, 131059, 7, 0, 131060, 7, 0, 131061, 7, 0, 131062, 7, 0, 131063, 7, 0, 131064, 7, 0, 131065, 7, 0, 131066, 7, 0, 131067, 7, 0, 131068, 7, 0, 131069, 7, 0, 131070, 7, 0, 131071, 7, 0, 65536, 7, 0, 65537, 7, 0, 65538, 7, 0, 65539, 7, 0, 65540, 7, 0, 65541, 7, 0, 65542, 7, 0, 65543, 7, 0, 65544, 7, 0, 65545, 7, 0, 65546, 7, 0, 65547, 7, 0, 65548, 7, 0, 65549, 7, 0, 65550, 7, 0, 65551, 7, 0, 65552, 7, 0, 65553, 7, 0, 65554, 7, 0, 65562, 5, 1, 65563, 5, 1, 65564, 5, 1, 65568, 5, 3, 65569, 5, 3, 65570, 5, 3, 65573, 5, 3, 65574, 5, 3, 65575, 5, 3, 65576, 5, 3, 65577, 5, 3, 65578, 5, 3, 65579, 5, 3, 65580, 5, 3, 65581, 5, 6, 196592, 5, 7, 196595, 7, 0, 196596, 7, 0, 196597, 7, 0, 196598, 7, 0, 196599, 7, 0, 196600, 7, 0, 196601, 7, 0, 196602, 7, 0, 196603, 7, 0, 196604, 7, 0, 196605, 7, 0, 196606, 7, 0, 196607, 7, 0, 131072, 7, 0, 131073, 7, 0, 131074, 7, 0, 131075, 7, 0, 131076, 7, 0, 131077, 7, 0, 131078, 7, 0, 131079, 7, 0, 131080, 7, 0, 131081, 7, 0, 131082, 7, 0, 131083, 7, 0, 131084, 7, 0, 131085, 7, 0, 131086, 7, 0, 131087, 7, 0, 131088, 7, 0, 131089, 7, 0, 131090, 7, 0, 131098, 5, 1, 131099, 5, 1, 131100, 5, 1, 131117, 5, 6, 262128, 5, 7, 262131, 7, 0, 262132, 7, 0, 262133, 7, 0, 262134, 7, 0, 262135, 7, 0, 262137, 7, 0, 262138, 7, 0, 262139, 7, 0, 262140, 7, 0, 262141, 7, 0, 262142, 7, 0, 262143, 7, 0, 196608, 7, 0, 196609, 7, 0, 196610, 7, 0, 196611, 7, 0, 196612, 7, 0, 196613, 7, 0, 196614, 7, 0, 196615, 7, 0, 196616, 7, 0, 196617, 7, 0, 196618, 7, 0, 196619, 7, 0, 196620, 7, 0, 196621, 7, 0, 196622, 7, 0, 196623, 7, 0, 196624, 7, 0, 196625, 7, 0, 196626, 7, 0, 196634, 5, 1, 196635, 5, 1, 196636, 5, 1, 196653, 5, 6, 327664, 5, 7, 327667, 5, 65542, 327668, 5, 65543, 327669, 5, 65543, 327670, 5, 65544, 327671, 7, 0, 327672, 7, 0, 327673, 5, 65542, 327674, 5, 65544, 327677, 7, 0, 327678, 7, 0, 327679, 7, 0, 262144, 7, 0, 262145, 7, 0, 262146, 7, 0, 262147, 7, 0, 262148, 7, 0, 262149, 7, 0, 262150, 7, 0, 262151, 7, 0, 262152, 7, 0, 262153, 7, 0, 262154, 7, 0, 262155, 7, 0, 262156, 7, 0, 262157, 7, 0, 262158, 7, 0, 262159, 7, 0, 262160, 7, 0, 262161, 7, 0, 262162, 7, 0, 262170, 5, 1, 262171, 5, 1, 262172, 5, 1, 262173, 5, 3, 262174, 5, 3, 262175, 5, 3, 262176, 5, 3, 262177, 5, 3, 262178, 5, 3, 262179, 5, 3, 262180, 5, 3, 262181, 5, 3, 262182, 5, 3, 262183, 5, 3, 262184, 5, 3, 262185, 5, 3, 262186, 5, 3, 262187, 5, 3, 262188, 5, 3, 262189, 5, 6, 393200, 5, 7, 393203, 7, 0, 393204, 7, 0, 393205, 7, 0, 393206, 7, 0, 393207, 7, 0, 393208, 7, 0, 393209, 7, 0, 393210, 7, 0, 393211, 7, 0, 393212, 7, 0, 393213, 7, 0, 393214, 7, 0, 393215, 7, 0, 327680, 7, 0, 327681, 7, 0, 327682, 7, 0, 327683, 7, 0, 327684, 7, 0, 327685, 7, 0, 327686, 7, 0, 327687, 7, 0, 327688, 7, 0, 327689, 7, 0, 327690, 7, 0, 327691, 7, 0, 327692, 7, 0, 327693, 7, 0, 327694, 5, 1, 327695, 7, 0, 327696, 7, 0, 327697, 7, 0, 327698, 7, 0, 327706, 5, 1, 327707, 5, 1, 327708, 5, 1, 327709, 5, 3, 327710, 5, 3, 327711, 5, 3, 327712, 5, 3, 327713, 5, 3, 327714, 5, 3, 327715, 5, 3, 327716, 5, 3, 327717, 5, 3, 327718, 5, 3, 327719, 5, 3, 327720, 5, 3, 327721, 5, 3, 327722, 5, 3, 327723, 5, 3, 327724, 5, 3, 327725, 5, 6, 458736, 5, 7, 458739, 7, 0, 458740, 7, 0, 458741, 7, 0, 458742, 7, 0, 458743, 7, 0, 458744, 7, 0, 458745, 7, 0, 458746, 7, 0, 458747, 7, 0, 458748, 7, 0, 458749, 7, 0, 458750, 7, 0, 458751, 7, 0, 393216, 7, 0, 393217, 7, 0, 393218, 7, 0, 393219, 7, 0, 393220, 7, 0, 393221, 7, 0, 393222, 7, 0, 393223, 7, 0, 393224, 7, 0, 393225, 7, 0, 393226, 7, 0, 393227, 7, 0, 393228, 7, 0, 393229, 7, 0, 393230, 5, 1, 393231, 7, 0, 393232, 7, 0, 393233, 7, 0, 393234, 7, 0, 393242, 5, 1, 393243, 5, 1, 393244, 5, 1, 393245, 5, 3, 393246, 5, 3, 393247, 5, 3, 393248, 5, 3, 393249, 5, 3, 393250, 5, 3, 393251, 5, 3, 393252, 5, 3, 393253, 5, 3, 393254, 5, 3, 393255, 5, 3, 393256, 5, 3, 393257, 5, 3, 393258, 5, 3, 393259, 5, 3, 393260, 5, 3, 393261, 5, 6, 524272, 5, 3, 524273, 5, 3, 524274, 5, 3, 524275, 5, 2, 524276, 5, 2, 524277, 5, 2, 524278, 5, 2, 524279, 5, 2, 524280, 5, 2, 524281, 5, 2, 524282, 5, 2, 524283, 5, 2, 524284, 5, 2, 524285, 5, 2, 524286, 5, 2, 524287, 5, 2, 458752, 5, 2, 458753, 5, 2, 458754, 5, 2, 458755, 5, 2, 458756, 5, 2, 458757, 5, 2, 458758, 5, 2, 458759, 5, 2, 458760, 5, 2, 458761, 5, 2, 458762, 5, 2, 458763, 5, 2, 458764, 5, 2, 458765, 5, 2, 458766, 5, 2, 458767, 5, 2, 458768, 5, 2, 458769, 5, 2, 458770, 5, 2, 458771, 5, 2, 458772, 5, 2, 458773, 5, 2, 458774, 5, 2, 458775, 5, 2, 458776, 5, 2, 458777, 5, 2, 458778, 5, 2, 458779, 5, 2, 458780, 5, 2, 458781, 5, 2, 458782, 5, 2, 458783, 5, 2, 458784, 5, 2, 458785, 5, 2, 458786, 5, 2, 458787, 5, 2, 458788, 5, 2, 458789, 5, 2, 458790, 5, 2, 458791, 5, 2, 458792, 5, 2, 458793, 5, 2, 458794, 5, 2, 458795, 5, 2, 458796, 5, 2, 458797, 5, 65539 ) [node name="DropThroughPlatforms" type="TileMap" parent="."] tile_set = ExtResource( 5 ) @@ -151,7 +156,7 @@ cell_size = Vector2( 16, 16 ) format = 1 [node name="ElevatorButton" parent="." instance=ExtResource( 7 )] -position = Vector2( 158, -124 ) +position = Vector2( -32, 108 ) elevator_time = 10 [node name="Portal" parent="ElevatorButton" instance=ExtResource( 11 )] @@ -160,10 +165,30 @@ scale = Vector2( 0.5, 0.5 ) next_scene = "res://src/Levels/Actual Level 1.tscn" [node name="FlyingLaserCutter" parent="." instance=ExtResource( 13 )] -position = Vector2( 80, 47 ) +position = Vector2( -128, 96 ) +rotation = -1.57079 +scale = Vector2( 1, 1.00162 ) +avoid_crushing = true + +[node name="FlyingLaserCutter2" parent="." instance=ExtResource( 13 )] +position = Vector2( 32, 41 ) rotation = 1.57079 scale = Vector2( 1, 1.00162 ) +[node name="FlyingLaserCutter3" parent="." instance=ExtResource( 13 )] +position = Vector2( 108, 99 ) +scale = Vector2( 1, 1.00162 ) + +[node name="FlyingLaserCutter4" parent="." instance=ExtResource( 13 )] +position = Vector2( 384, 48 ) +rotation = 1.57079 +scale = Vector2( 1, 1.00162 ) + +[node name="FlyingLaserCutter5" parent="." instance=ExtResource( 13 )] +position = Vector2( 704, 48 ) +rotation = 3.14159 +scale = Vector2( 1, 1.00162 ) + [connection signal="body_exited" from="Blobby/BlobbySkin" to="Blobby" method="_on_BlobbySkin_body_exited"] [editable path="SignalManager"] diff --git a/src/ObstacleObjects/Mine.gd b/src/ObstacleObjects/Mine.gd index 3e5f4dc..b23fc32 100644 --- a/src/ObstacleObjects/Mine.gd +++ b/src/ObstacleObjects/Mine.gd @@ -4,20 +4,23 @@ extends Node2D # Declare member variables here. Examples: # var a: int = 2 # var b: String = "text" -export var is_locked = true +export var is_armed = false func _ready() -> void: - $Area2D.remove_from_group("harmful") - $Sprite/AnimationPlayer.play("unarmed") - + if(!is_armed): + $Area2D.remove_from_group("harmful") + $Sprite/AnimationPlayer.play("unarmed") + else: + $Area2D.add_to_group("harmful") + $Sprite/AnimationPlayer.play("armed") func _on_Area2D_area_exited(area: Area2D) -> void: $Timer.start() func _on_Timer_timeout() -> void: - is_locked = true + is_armed = true $Area2D.add_to_group("harmful") $Sprite/AnimationPlayer.play("arming") diff --git a/src/Platforms/FlyingLaserCutter.gd b/src/Platforms/FlyingLaserCutter.gd index 9da431a..8f1ba9d 100644 --- a/src/Platforms/FlyingLaserCutter.gd +++ b/src/Platforms/FlyingLaserCutter.gd @@ -10,10 +10,13 @@ onready var slide_friction = 1.5 var flyoff_triggered = false var has_hit_player = false -var velocity = 1 -var max_velocity = 200 -var acceleration_force = 1200 -var mass = 10 +var halted = false +export(float) var velocity = 1 +export(float) var max_velocity = 200 +export(float) var acceleration_force = 1200 +export(float) var mass = 10 +export(bool) var avoid_crushing = false +export(bool) var fast_retrigger = false # TODO Returing Laser cutter has broken collision and infinite inertia # Maybe keep returning paths free and crush player when in the way @@ -23,18 +26,21 @@ func _ready() -> void: func _physics_process(delta: float) -> void: + if !flyoff_triggered: for ray in trigger_rays: # When player has been hit on the way if (has_hit_player && body.position.x > 0): break - if ray.is_colliding(): + if ray.is_colliding() && (body.position.x < 1 || fast_retrigger): var collider = ray.get_collider() if collider.is_in_group("player"): flyoff_triggered = true body.set("motion/sync_to_physics", false) break if body.position.x > 0: + if halted && avoid_crushing: + return velocity=1 body.position.x += (max_velocity/3)*-1*delta elif body.position.x == 0: @@ -51,3 +57,13 @@ func _physics_process(delta: float) -> void: else: has_hit_player = true flyoff_triggered = false + + +func _on_BackArea_body_entered(body: Node) -> void: + if(body.is_in_group("player")): + halted = true + + +func _on_BackArea_body_exited(body: Node) -> void: + if(body.is_in_group("player")): + halted = false diff --git a/src/Platforms/FlyingLaserCutter.tscn b/src/Platforms/FlyingLaserCutter.tscn index eb30c7e..010cca4 100644 --- a/src/Platforms/FlyingLaserCutter.tscn +++ b/src/Platforms/FlyingLaserCutter.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=6 format=2] +[gd_scene load_steps=7 format=2] [ext_resource path="res://assets/contraption/FlyingLaserCutterShaded.png" type="Texture" id=1] [ext_resource path="res://src/Platforms/FlyingLaserCutter.gd" type="Script" id=2] @@ -25,6 +25,9 @@ extents = Vector2( 11.4921, 11.9129 ) [sub_resource type="RectangleShape2D" id=4] extents = Vector2( 3.067, 10 ) +[sub_resource type="RectangleShape2D" id=5] +extents = Vector2( 0.5, 11 ) + [node name="FlyingLaserCutter" type="Node2D"] script = ExtResource( 2 ) @@ -32,6 +35,7 @@ script = ExtResource( 2 ) collision_layer = 32 collision_mask = 57 collision/safe_margin = 0.001 +motion/sync_to_physics = true [node name="Sprite" type="Sprite" parent="FlyingLaserCutterBody"] texture = ExtResource( 1 ) @@ -51,14 +55,25 @@ shape = SubResource( 3 ) [node name="LaserArea" type="Area2D" parent="FlyingLaserCutterBody" groups=["harmful"]] process_priority = -1 +position = Vector2( 10, 0 ) collision_layer = 32 collision_mask = 3 [node name="PainZone" type="CollisionShape2D" parent="FlyingLaserCutterBody/LaserArea" groups=["harmful"]] process_priority = -1 -position = Vector2( 9.647, 0 ) +position = Vector2( -9.53674e-07, 0 ) shape = SubResource( 4 ) +[node name="BackArea" type="Area2D" parent="FlyingLaserCutterBody"] +position = Vector2( -11.5, 0 ) +collision_layer = 16 +collision_mask = 3 +monitorable = false + +[node name="CollisionShape2D" type="CollisionShape2D" parent="FlyingLaserCutterBody/BackArea"] +position = Vector2( -1, 0 ) +shape = SubResource( 5 ) + [node name="Triggers" type="Node2D" parent="FlyingLaserCutterBody"] visible = false position = Vector2( 0, 0.0077219 ) @@ -78,3 +93,6 @@ scale = Vector2( 1, 1000 ) enabled = true cast_to = Vector2( 0, 1 ) collision_mask = 9 + +[connection signal="body_entered" from="FlyingLaserCutterBody/BackArea" to="." method="_on_BackArea_body_entered"] +[connection signal="body_exited" from="FlyingLaserCutterBody/BackArea" to="." method="_on_BackArea_body_exited"] diff --git a/src/Sounds/default_bus_layout.tres b/src/Sounds/default_bus_layout.tres index dcc1b97..9b97794 100644 --- a/src/Sounds/default_bus_layout.tres +++ b/src/Sounds/default_bus_layout.tres @@ -41,12 +41,12 @@ resource_name = "LowPassFilter" cutoff_hz = 3000.0 [resource] -bus/0/volume_db = inf_neg +bus/0/volume_db = -6.0206 bus/1/name = "Music" bus/1/solo = false bus/1/mute = false bus/1/bypass_fx = false -bus/1/volume_db = 0.0 +bus/1/volume_db = -6.0206 bus/1/send = "Master" bus/1/effect/0/effect = SubResource( 1 ) bus/1/effect/0/enabled = false diff --git a/src/ThirdParty/Demo/meshinstance.gd b/src/ThirdParty/Demo/meshinstance.gd index 52a139e..66a79a1 100644 --- a/src/ThirdParty/Demo/meshinstance.gd +++ b/src/ThirdParty/Demo/meshinstance.gd @@ -2,5 +2,5 @@ extends MeshInstance func _process(delta): - if(get_parent().visible): - rotate_y(PI / 4.0 * delta) + if(get_parent().visible): + rotate_y(PI / 4.0 * delta)