From 0e4b71387e818c1c0d31b92c69810ad5b4638d50 Mon Sep 17 00:00:00 2001 From: ncusimano Date: Sun, 20 Aug 2023 00:00:17 -0600 Subject: [PATCH] New Slimes Just Dropped --- godot/Models/grape_animations/pickup.res | Bin 12625 -> 27930 bytes .../grape_animations/upper_body_holding.res | Bin 692 -> 2076 bytes .../grape_animations/upper_body_idle.res.res | Bin 470 -> 934 bytes godot/Models/grape_animations/walk.res | Bin 3421 -> 7989 bytes godot/Villager.gd | 92 +----------------- godot/cultist.gd | 18 ++++ godot/cultist.tscn | 20 +++- godot/slime_shared.gd | 86 ++++++++++++++++ 8 files changed, 120 insertions(+), 96 deletions(-) create mode 100644 godot/cultist.gd diff --git a/godot/Models/grape_animations/pickup.res b/godot/Models/grape_animations/pickup.res index 0471c90c518a2d0c192b398b6f3490ff06cea8af..e98b629001b0d6d80a3204a6ac2737b942b384de 100644 GIT binary patch literal 27930 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 literal 12625 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 literal 692 zcmV;l0!#f;Q$s@n000005C8xe2mk<_0ssIgwJ-f(7zdRU0Onh2Nbs;W9h8B}cDUl) z;xIXAR*g@<=fUTPXW)uO*^|@X_uRYRSD%QmT@MV6B)59Yv&YcOlV0}V=Kj9_b2xdj zXJz%jWn0lP1xx@<09yc^NIffd?O~K1+vHuX%te{JFvLf@L?Sh|BtFO!rXB8kQU6EY zVOE=4Y!l6Yk%J)~eS{7R@CFOX{~)h6%=8r24gUxH_x$(xAMyv;oO8}OF$}{n47;xD zx~^+XwTWUA2!3(rdf=r@@7H1ttxfW;Gq(2>g5Ecktru%Fc@*c{dF;=gx@)ai%3y8r ze}MOi)&lR^-q_h3CJIVI2{@LS9T*`P85vYKz%56K8r%s0|4%?3B?dlbm+c6F7!)8o zllrWT2m$|HLU2AdmS7D((U!W@XKSpHc6})Ztx@dHg0QR@E#DA(qo!$^rfFH0Wmy&+ zNHio2+YX8b&PB^A<%Q_RBhs>oUEyf&3umK)MvE9AJ5)p~ADf36HkNd`&|-mwlTt;_ zN{Vcw8zkIEm13oW%70G^3WW(=2u26T#)*Uo5FR*az)87cTggw(=mv=Us8kFV1b~F7 zk*p&_q96q+XqGV$Bbgy;0}?>OBnB}AXvP>L-~!If+`j|+R2BTeD77(|uvSvQzR>J@ z8ANe`H53aaSIvd_(&6t{$I-AwQV*~G`xpazu<)}a%=LYinLc(T9XsFOJhUHockd4S z2qn~}B<@5GkIL%nwUw327Xzb5CIDj+H!Febq47ZwP5L2G@}6(VSU!l@Hr@z^Tow^V zfnA0OR)H>q38p}9g9M{OF3tnFs~2S-BLi-m_~&jOP<5uSzP$bxmf|J>%=x@Wbyw($ aWpUZfz#8HTiH{k^Cv1~KodFqAQ$s@(wL5PB diff --git a/godot/Models/grape_animations/upper_body_idle.res.res b/godot/Models/grape_animations/upper_body_idle.res.res index fd30d7a6e7756bbe986aa84a3158f015341292de..0f2924dd9e7642bc88c6dd43175e638f56c11870 100644 GIT binary patch literal 934 zcma)5xlY6|5H+`e={TzJpJI3QL1 czK~D3WeiVR|0|M@Tdo|IaeG~C(yL4<3bXJrg|&oP$+0;w>@)HIx^%0W&9W@ZvdngTf>k7Q zTKP^(7ow2}BD86-K$KMnlu{AUJUC=97fXnuLtl@f?15#5%L#oo>kN^Mx diff --git a/godot/Models/grape_animations/walk.res b/godot/Models/grape_animations/walk.res index 40403e8f0560764c027ddee8c860c3c6078f6490..d0c49878564030fe8d3e37169ce913641272fa12 100644 GIT binary patch literal 7989 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 Hf0+Ld$>J!J literal 3421 zcmV-j4WjZ=Q$s@n000005C8x%9{>P`1^@uN1^@skwJ-f(01xFe0Ln^K5=1~^)&a9g zEIm!lW}dAQL?~ic$%u`QojPu=hb&_s&*&F1i#S`CO>QB~Ec)3!z1W|Vq;#R{di~!m z+wa8)e$pkPkpch#8vzyp1^$p8tXiWcetPe5Ti4QAsH!#U!l;cxX>2r0HEON&)SfaL zr6SzeIxB59o6Tmk$z(E_OeS-=TrQW(rBbO>DwWD)GMP*!lSm{Ii9{lg$K&yMJZih> zYBcMjsAIGAeKpXr?kILjTd$&5ny63dJ8NUJ>I0p|cHPD(qqZuIW^XKgYw4+-1;yI7 z73-#6X)B!-y$W^uN=vm+`-WPhQrilprCBXoOCNRmYGc4^Ri*U^5+p)EU2CiXJp>dM zwZ^)8?>-$F6$M3KYphm7@@n6-m9AR#-h(=|&T{C>B%ELh6E=AC-U0NhUEk5H`g)=F z4%B-O(0k|Uy$5>_ffl$s;-C^C^3Q-9a*|JxewYBS>L0Fuc(NMmswtbpISD0wtRBr%_xf|!Xi z!rqw)o(_y(e76KHZqk~$O|j)- za~fvi1`ASHN@%=o<(O}&(B|Iz2Wya_0$yDQDLpz)IoC>eyWS5LR6?PQldZy@7;3I| zl!;yM{{qyK#^eGe0|DuBHm=YQ`}W?M4iNDe4fQ0Uw@n}v@C0aDA8f8mE>rt}$-2xq zgArZ-i~2KH*doCY}&aI;sHF|da{JA9Z6eXgYz^LEV*mut~mNX_eC>aQtC1>Lf z9m&;>1^%|{rKR-f1m#>S_4jx_{k&}@Dc@2Z`DDH4UT(@sE;hH}-{^YtJ`Fr}4&mfa zcWZ=rUysq(dOl^uXHmGHMc3Pg%wN$vUwpSDE^gA|J)ci*%;$C#Gf_GKu|wuTsu9<* z1H`WPZ*?^|4m%Dpl3zCG5D+LK0)*asaQMJM(`;uX_(cn{!i#dw{JLs^6uc}DrNHYIsQ?kxo3+-& z`M)tG{9ha@Gw)ZNns1ohc{?#mc)kVN@KzRg78{%LfHrh^zhYH*>&`rDt(o(GV@~+L zI3L1XUn}M+2vyJKi5-83E=>4^8I*Ym3d!pgp@@TCTVWV?HRQN0p|6WNi-F*T;jcC> zIjAG)@hi8O$Z9PN_Jv1Q8lC_raRz}Us8PKk$cV^DFhVlvL59SbqTvG)Akz#;H-rL( zh^U~5wSNbEQ|(ynEP53>HP!m4Oix!^+S1Yg1j|GF8E@n#ZiBNBclICbvYRrdxXkP^ zQsJf4xkRiyFs#t_>g3)?-ea4h>sh)X4FM$z9RUpi5eXRu2?0WGo7uAXqZhlkX@GA` zJ+4LP*6F&uy{peM?@I5*^}g2rH+BQdc(7j<_Tk|+IWhMa%Xnj}KDOh?Jvo_gE35Ej zU(amu%{8?%?LX^bXkU(Y!=<|dee9;f9mM8Wt)q`|+3HYU6`H51je2}(bM756WP05u z#21s}l%=q3lCw-b1&l7{WFx-NNwiCrYZ_5a1sl_3Rh0bF9Ze~3Mu6XEKACW@zjnqa z6ZU%7&v-Ine((B>M=s3wuATG9!o2>qGmlKT*Izs1lL?1^klwn0*k>`kz-codwgb55 z$y^p|xy@GqrXTcN%oO>nmiaghwE%jD?}LiXAuRQnX`ud>FetSz{a`T;jWqzuNz@TS zFkn^(yDTWKZTVx+(%I%)h=|%$UkC?b&aB~BH$-c&Om?*^)4?ElyZ}r1S|LMsV~wpj(s+1NA=xj_Z5So$}(vlx1Qv#CzKbT{TB1HjD-_BFmhsE~rF-jKi|QGq>FuFby^$V z22zH*-Ez4#YT3z}QM8&J;U4>g!oB|EF1pZ`)yuUPwxyb2%yO*wnGf&OczK{<*;;~K zW*3yGXnXUY9#b=&B¥gUS{sCWj3gGRUY- zsTj6#a?9;mh)=jx1p;plEU4jLpXC1^{Qrd|fd99k;QuQq|3B#eiT|H`s|_)*rqZfZ z$29BzjsHLN{}j0O13OtB2`z;a*<}F$@w9(#jk?gunrd3jF3%qO@%Q2Avg)e2Ik92X2iKD2X56MXz0$Jj zP&z-oEYuQ51^sx{KLI@@!7R&iQxAFqpwrBSUUkc;*kTR;e}E?s%?=w(48?3Hq-?gM zRI#-L!_0(!(5fxfBx9Ci#c)2n`+9kxxozZ9Y5pQ;p(I{ndI7JQaEjeXjj)-S&8Hz4 z9gWdUT_fjH3H~%jwps~OP@K5QvWRC4Y%Y>^b&}axoN51t2CUzq|!e(ZmbORMv-c>_Dyu^e9UNhlAAJw#YwhkK$ zoi)vUhPNA7;pWZq1;t^k#TgF+l3oPn$lLXH-N+@<{6!EUpevvwhAb$uJhG#^^HgBu zeTsY>y$u~P`}1)imK`$HC|Qc?mL$daxKn^a4Ti2#kq4gyJF-8tzLetF#0J;)ivTr8 zEk$7JPHrMXfcSr+4^Vt(sZE{Cn$B!*fx1ApOjylveaG&U7wX#lodcj-l;g6e6OkZv zBUlJcKVAuF)0c&AVBHCqfoO@Ao~ZV!xxv^lnoa6hxn`Mrr&i+x>tTHDY z{fDMH5Z0Y=PH~%FmWI;(bvW8thp&Ipv7f?j)XXWBdDct08FO48QYW*pW;QQ?fo`bL zDIsIgj06RVGt2=Y280ko2x%P=03CClNST5p%>fT2TONGdm|=BX2MflZi(>rfy1rd< z?;<7xn%8Bl5qU3)p`-iyU_<=BDCR~7_ARR&jKqi{Shw%HF;kdgOyrGaJ2<>D$D43= z&{nLGO5Gr*rd6WM4qA!U1u``}nUzSzcT4knMy8Z4ZU^J->P*u@4DElwzBy(g=hdGcO1EMEZJD5cUHh|xSMk@S zs!7zwv`ER54aj-)i*hAXx1?TXE0Xc>*^m80Ibfe}K%QhRcl-=@qS;w41iwRWgWNmk z2FSg>RG|F04Xj_^Xo`|$^H*1ycGlE!6uhVE<~+4@=232fHuPy5pZr9~S>JaK1_QqN zHuYvY`$y83XRUL;Qs)~Y>)1}($X3M0_fb3FB(d?4i+D`b-owvWw%Q$}F>rYQ_SpB{ zJs$If_im4M@15f@PI%wi?5IE@DGf~(-p2HAPZ$@4b5U3qg?CYy7lnIK*cXL=Q5YD7 zgHc!*g@;j?7=?>b*cgS6Q5YG8lTlb1g_lv78HJls*cpYNQ5YJ9qfuBIM@K0ao?>B6 z1~egu`wfOW946enuDWUPI_ILeA&q68(5m6a8^P?(5`&L32WvKGY6$tZmDQdzz11NI z!Zf*3KpQJE)|gysSKYEydb`I-Z}*g{Wh?!qBjq$afqtZ&TB=mwKU;)qQd2`i>k5bT diff --git a/godot/Villager.gd b/godot/Villager.gd index b637160..3139a5f 100644 --- a/godot/Villager.gd +++ b/godot/Villager.gd @@ -1,92 +1,2 @@ extends SharedSlime - -var rng = RandomNumberGenerator.new() -@onready var target_location_xz = transform.origin * Vector3(1, 0, 1) -@onready var location_xz = transform.origin * Vector3(1, 0, 1) -@onready var target_direction_xz = (transform.basis * Vector3(1, 0, 1)).normalized() -@onready var direction_xz = (transform.basis * Vector3(1, 0, 1)).normalized() -var task = "idle" - -# Percentage chances of the character performing certain actions while idle. -@export var walk_chance = 0.1 -@export var spin_chance = 0.2 - -@export var walk_speed = 0.5 - -# Rate at which character corrects their direction after going off course (percentage). -@export var dir_correction_rate = 0.95 - -# Margin of accuracy to which the character will correct their direction when off course (radians). -@export var dir_accuracy = deg_to_rad(0.1) - -# Get the gravity from the project settings to be synced with RigidBody nodes. -var gravity = ProjectSettings.get_setting("physics/3d/default_gravity") - -# Called when the node enters the scene tree for the first time. -func _ready(): - pass - - -# Called every frame. 'delta' is the elapsed time since the previous frame. -func _process(_delta): - location_xz = transform.origin * Vector3(1, 0, 1) - direction_xz = (transform.basis * Vector3(1, 0, 1)).normalized() - - match task: - "idle": - idle() - task = rng.randf_range(0, 100) - - # 3% chance to walk somewhere. - if task <= walk_chance: - task = "walk" - target_location_xz = transform.origin * Vector3(1, 0, 1) + (direction_xz * 4) - # 6% chance to rotate. - elif task > walk_chance and task <= (walk_chance + spin_chance): - task = "spin" - var rotation_angle = rng.randf_range(-2*PI, 2*PI) - var rotation_vector = Vector3(cos(rotation_angle), 0, sin(rotation_angle)) - target_direction_xz = direction_xz + rotation_vector - # 90% chance to idle. - elif task > (spin_chance + walk_chance): - task = "idle" - - "walk": - walk() - # Get the direction to the target in z-x plane. - target_direction_xz = (location_xz.direction_to(target_location_xz) * Vector3(1, 0, 1)).normalized() - - # Continue to correct direction to within a margin of dir_accuracy degrees. - if direction_xz.angle_to(target_direction_xz) >= dir_accuracy: - # Rotate towards destination at specified percentage rate. - rotate_y(direction_xz.angle_to(target_direction_xz) * dir_correction_rate) - - if location_xz.distance_to(target_location_xz) <= (Vector2(direction_xz.x, direction_xz.z) * walk_speed).length(): - target_direction_xz = direction_xz - target_location_xz = location_xz - task = "idle" - - "spin": - # Continue to correct direction to within a margin of dir_accuracy degrees. - if direction_xz.angle_to(target_direction_xz) >= dir_accuracy: - # Rotate towards destination at specified percentage rate. - rotate_y(direction_xz.angle_to(target_direction_xz) * dir_correction_rate) - else: - task = "idle" - - - -func _physics_process(delta): - # Add the gravity. - if not is_on_floor(): - velocity.y -= gravity * delta - - # Walk to target location. - if (location_xz.distance_to(target_location_xz) > walk_speed) and task == "walk": - velocity.x = direction_xz.x * walk_speed - velocity.z = direction_xz.z * walk_speed - else: - velocity.x = 0 - velocity.z = 0 - - move_and_slide() +class_name Villager diff --git a/godot/cultist.gd b/godot/cultist.gd new file mode 100644 index 0000000..9e4afc6 --- /dev/null +++ b/godot/cultist.gd @@ -0,0 +1,18 @@ +extends SharedSlime +class_name Cultist + +const SPEED = 5.0 +const JUMP_VELOCITY = 4. + +func _on_area_3d_body_entered(body): + var items_in_range = $Area3D.get_overlapping_bodies() + var villagers = [] + + for item in items_in_range: + if is_class("Villager"): + villagers.append(item) + + var rng = RandomNumberGenerator.new() + var victim_num = rng.randi_range(0, villagers.size()) + + diff --git a/godot/cultist.tscn b/godot/cultist.tscn index 2dea629..409ecfc 100644 --- a/godot/cultist.tscn +++ b/godot/cultist.tscn @@ -1,5 +1,6 @@ -[gd_scene load_steps=5 format=3 uid="uid://e0s4phx2jiit"] +[gd_scene load_steps=7 format=3 uid="uid://e0s4phx2jiit"] +[ext_resource type="Script" path="res://cultist.gd" id="1_k6djk"] [ext_resource type="Texture2D" uid="uid://df0xror4t3gbc" path="res://Default Purple.png" id="1_x8j7f"] [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_y0hcm"] @@ -10,12 +11,21 @@ albedo_texture = ExtResource("1_x8j7f") [sub_resource type="CapsuleMesh" id="CapsuleMesh_17ljq"] material = SubResource("StandardMaterial3D_vxnad") -[node name="Node3D" type="Node3D"] +[sub_resource type="SphereShape3D" id="SphereShape3D_rypky"] +radius = 20.0 -[node name="RigidBody3D" type="RigidBody3D" parent="."] +[node name="Cultist" type="CharacterBody3D"] +script = ExtResource("1_k6djk") -[node name="CollisionShape3D" type="CollisionShape3D" parent="RigidBody3D"] +[node name="CollisionShape3D" type="CollisionShape3D" parent="."] shape = SubResource("CapsuleShape3D_y0hcm") -[node name="MeshInstance3D" type="MeshInstance3D" parent="RigidBody3D/CollisionShape3D"] +[node name="MeshInstance3D" type="MeshInstance3D" parent="CollisionShape3D"] mesh = SubResource("CapsuleMesh_17ljq") + +[node name="Area3D" type="Area3D" parent="."] + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Area3D"] +shape = SubResource("SphereShape3D_rypky") + +[connection signal="body_entered" from="Area3D" to="." method="_on_area_3d_body_entered"] diff --git a/godot/slime_shared.gd b/godot/slime_shared.gd index b57e2e0..eeda09f 100644 --- a/godot/slime_shared.gd +++ b/godot/slime_shared.gd @@ -3,11 +3,97 @@ class_name SharedSlime var is_holdable: bool = true +var rng = RandomNumberGenerator.new() +@onready var target_location_xz = transform.origin * Vector3(1, 0, 1) +@onready var location_xz = transform.origin * Vector3(1, 0, 1) +@onready var target_direction_xz = (transform.basis * Vector3(1, 0, 1)).normalized() +@onready var direction_xz = (transform.basis * Vector3(1, 0, 1)).normalized() +var task = "idle" + +# Percentage chances of the character performing certain actions while idle. +@export var walk_chance = 0.1 +@export var spin_chance = 0.2 + +@export var walk_speed = 0.5 + +# Rate at which character corrects their direction after going off course (percentage). +@export var dir_correction_rate = 0.95 + +# Margin of accuracy to which the character will correct their direction when off course (radians). +@export var dir_accuracy = deg_to_rad(0.1) + +# Get the gravity from the project settings to be synced with RigidBody nodes. +var gravity = ProjectSettings.get_setting("physics/3d/default_gravity") + func _ready(): $slime.idle() func walk(): $slime.walk() + # Get the direction to the target in z-x plane. + target_direction_xz = (location_xz.direction_to(target_location_xz) * Vector3(1, 0, 1)).normalized() + + # Continue to correct direction to within a margin of dir_accuracy degrees. + if direction_xz.angle_to(target_direction_xz) >= dir_accuracy: + # Rotate towards destination at specified percentage rate. + rotate_y(direction_xz.angle_to(target_direction_xz) * dir_correction_rate) + + if location_xz.distance_to(target_location_xz) <= (Vector2(direction_xz.x, direction_xz.z) * walk_speed).length(): + target_direction_xz = direction_xz + target_location_xz = location_xz + task = "idle" + +func spin(): + # Continue to correct direction to within a margin of dir_accuracy degrees. + if direction_xz.angle_to(target_direction_xz) >= dir_accuracy: + # Rotate towards destination at specified percentage rate. + rotate_y(direction_xz.angle_to(target_direction_xz) * dir_correction_rate) + else: + task = "idle" func idle(): $slime.idle() + task = rng.randf_range(0, 100) + + # 3% chance to walk somewhere. + if task <= walk_chance: + task = "walk" + target_location_xz = transform.origin * Vector3(1, 0, 1) + (direction_xz * 4) + # 6% chance to rotate. + elif task > walk_chance and task <= (walk_chance + spin_chance): + task = "spin" + var rotation_angle = rng.randf_range(-2*PI, 2*PI) + var rotation_vector = Vector3(cos(rotation_angle), 0, sin(rotation_angle)) + target_direction_xz = direction_xz + rotation_vector + # 90% chance to idle. + elif task > (spin_chance + walk_chance): + task = "idle" + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(_delta): + location_xz = transform.origin * Vector3(1, 0, 1) + direction_xz = (transform.basis * Vector3(1, 0, 1)).normalized() + + match task: + "idle": + idle() + "walk": + walk() + "spin": + spin() + + +func _physics_process(delta): + # Add the gravity. + if not is_on_floor(): + velocity.y -= gravity * delta + + # Walk to target location. + if (location_xz.distance_to(target_location_xz) > walk_speed) and task == "walk": + velocity.x = direction_xz.x * walk_speed + velocity.z = direction_xz.z * walk_speed + else: + velocity.x = 0 + velocity.z = 0 + + move_and_slide()