diff --git a/Assets/Scenes/DEVSCENES/EnemyTest.tscn b/Assets/Scenes/DEVSCENES/EnemyTest.tscn index eb903f1..d86cd96 100644 --- a/Assets/Scenes/DEVSCENES/EnemyTest.tscn +++ b/Assets/Scenes/DEVSCENES/EnemyTest.tscn @@ -240,7 +240,7 @@ tile_set = SubResource("TileSet_q0ben") [node name="Enemies" type="Node" parent="."] [node name="IQEnemy" parent="Enemies" instance=ExtResource("8_s63xy")] -position = Vector2(221, -26) +position = Vector2(306, -26) [node name="StaticThreats" type="Node" parent="."] diff --git a/Assets/Scenes/DEVSCENES/IQEnemy.cs b/Assets/Scenes/DEVSCENES/IQEnemy.cs index d1ad32c..5081b07 100644 --- a/Assets/Scenes/DEVSCENES/IQEnemy.cs +++ b/Assets/Scenes/DEVSCENES/IQEnemy.cs @@ -5,6 +5,7 @@ public partial class IQEnemy : CharacterBody2D { // Misc float GlobalTimer; + Node2D VAH; // Shorthand refrence // Enemy Stats public int IQ; @@ -54,20 +55,21 @@ public partial class IQEnemy : CharacterBody2D // Read and set stats if (HasMeta("MaxHP")) MaxHP = (float)GetMeta("MaxHP"); + FacingDirection = "RIGHT"; + VAH = GetNode("VisualsAndHitboxes"); + // Set up collision detection - GetNode("GroundDetector").BodyEntered += OnGroundEntered; // Ground - GetNode("GroundDetector").BodyExited += OnGroundExited; - GetNode("LedgeDetector").BodyEntered += OnLedgeEntered; // Ledge - GetNode("LedgeDetector").BodyExited += OnLedgeExited; - GetNode("WallDetector").BodyEntered += OnWallEntered; // Wall - GetNode("WallDetector").BodyExited += OnWallExited; + VAH.GetNode("GroundDetector").BodyEntered += OnGroundEntered; // Ground + VAH.GetNode("GroundDetector").BodyExited += OnGroundExited; + VAH.GetNode("LedgeDetector").BodyEntered += OnLedgeEntered; // Ledge + VAH.GetNode("LedgeDetector").BodyExited += OnLedgeExited; + VAH.GetNode("WallDetector").BodyEntered += OnWallEntered; // Wall + VAH.GetNode("WallDetector").BodyExited += OnWallExited; GroundDetected = false; LedgeDetected = false; WallDetected = false; - FacingDirection = "RIGHT"; - // Apply IQ based permenant modifiers IQ = (int)GetMeta("IQ"); // Read IQ @@ -75,6 +77,9 @@ public partial class IQEnemy : CharacterBody2D HP = MaxHP; if (IQ >= 100 && HasMeta("RegenerationInterval")) RegenerationInterval *= 0.9f; if (IQ >= 100 && HasMeta("RegenerationAmmount")) RegenerationAmmount *= 1.05f; // 5% increase + + WalkSpeed += IQ / 20; + JumpHeight += IQ / 30; } public override void _Process(double delta) @@ -97,22 +102,17 @@ public partial class IQEnemy : CharacterBody2D if (IQ <= 20){ // Goomba ahh diddy blud if (GroundDetected && LedgeDetected == false){Flip();} if (WallDetected){Flip();} - // Walk - if (GroundDetected){Velocity = new Vector2(WalkSpeed * Scale[0], Velocity[1]);} + if (GroundDetected){Velocity = new Vector2(WalkSpeed * VAH.Scale[0], Velocity[1]);} // Walk } MoveAndSlide(); // Updates physics applied this frame } void Flip(){ - if (FacingDirection == "RIGHT"){ - Scale = new Vector2(-1,1); - FacingDirection = "LEFT"; - } - else if (FacingDirection == "LEFT") - { - Scale = new Vector2(1,1); - FacingDirection = "RIGHT"; - } + VAH.Scale = new Vector2(-1 * VAH.Scale[0],1); + WallDetected = false; + LedgeDetected = true; + if (FacingDirection == "RIGHT"){FacingDirection = "LEFT";} + else if (FacingDirection == "LEFT"){FacingDirection = "RIGHT";} } public void Regenerate(float ammount){ diff --git a/Assets/Scenes/DEVSCENES/IQEnemy.tscn b/Assets/Scenes/DEVSCENES/IQEnemy.tscn index 58254dd..2454e4f 100644 --- a/Assets/Scenes/DEVSCENES/IQEnemy.tscn +++ b/Assets/Scenes/DEVSCENES/IQEnemy.tscn @@ -3,8 +3,6 @@ [ext_resource type="Script" uid="uid://cy22d14qd0f48" path="res://Assets/Scenes/DEVSCENES/IQEnemy.cs" id="1_p53ib"] [ext_resource type="Texture2D" uid="uid://c0pno0ac25r7i" path="res://Assets/Sprites/knight.png" id="2_o0b1e"] -[sub_resource type="RectangleShape2D" id="RectangleShape2D_bc7hl"] - [sub_resource type="RectangleShape2D" id="RectangleShape2D_41iyt"] [sub_resource type="AtlasTexture" id="AtlasTexture_a1e3t"] @@ -127,6 +125,8 @@ animations = [{ "speed": 5.0 }] +[sub_resource type="RectangleShape2D" id="RectangleShape2D_bc7hl"] + [node name="IQEnemy" type="CharacterBody2D"] collision_layer = 8 collision_mask = 3 @@ -134,38 +134,40 @@ script = ExtResource("1_p53ib") metadata/IQ = 20 metadata/AbilityRegenerate = true -[node name="GroundDetector" type="Area2D" parent="."] -position = Vector2(1.1368684e-13, 10.999999) -scale = Vector2(0.099999994, 0.099999994) -collision_layer = 0 - -[node name="CollisionShape2D" type="CollisionShape2D" parent="GroundDetector"] -scale = Vector2(0.99999994, 0.99999994) -shape = SubResource("RectangleShape2D_bc7hl") - -[node name="LedgeDetector" type="Area2D" parent="."] -collision_layer = 0 - -[node name="CollisionShape2D" type="CollisionShape2D" parent="LedgeDetector"] -position = Vector2(14, 14) -scale = Vector2(0.1, 0.1) -shape = SubResource("RectangleShape2D_bc7hl") - -[node name="WallDetector" type="Area2D" parent="."] -collision_layer = 0 - -[node name="CollisionShape2D" type="CollisionShape2D" parent="WallDetector"] -position = Vector2(14, 9.536743e-07) -scale = Vector2(0.1, 0.1) -shape = SubResource("RectangleShape2D_bc7hl") - [node name="Hitbox" type="CollisionShape2D" parent="."] shape = SubResource("RectangleShape2D_41iyt") -[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] +[node name="VisualsAndHitboxes" type="Node2D" parent="."] + +[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="VisualsAndHitboxes"] position = Vector2(9.536743e-07, -1.9999999) scale = Vector2(0.99999994, 0.99999994) sprite_frames = SubResource("SpriteFrames_rqn21") autoplay = "default" frame = 1 frame_progress = 0.9866207 + +[node name="GroundDetector" type="Area2D" parent="VisualsAndHitboxes"] +position = Vector2(1.1368684e-13, 10.999999) +scale = Vector2(0.099999994, 0.099999994) +collision_layer = 0 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="VisualsAndHitboxes/GroundDetector"] +scale = Vector2(0.99999994, 0.99999994) +shape = SubResource("RectangleShape2D_bc7hl") + +[node name="LedgeDetector" type="Area2D" parent="VisualsAndHitboxes"] +collision_layer = 0 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="VisualsAndHitboxes/LedgeDetector"] +position = Vector2(14, 14) +scale = Vector2(0.1, 0.1) +shape = SubResource("RectangleShape2D_bc7hl") + +[node name="WallDetector" type="Area2D" parent="VisualsAndHitboxes"] +collision_layer = 0 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="VisualsAndHitboxes/WallDetector"] +position = Vector2(14, 9.536743e-07) +scale = Vector2(0.1, 0.1) +shape = SubResource("RectangleShape2D_bc7hl")