diff --git a/Resources/Patterns/rumia_ns_1_spiralized.tres b/Resources/Patterns/rumia_ns_1_spiralized.tres index 07e1c8bc..2c0142de 100644 --- a/Resources/Patterns/rumia_ns_1_spiralized.tres +++ b/Resources/Patterns/rumia_ns_1_spiralized.tres @@ -1,6 +1,7 @@ -[gd_resource type="Resource" script_class="SpiralPattern" load_steps=3 format=3 uid="uid://jjky5fqn74qk"] +[gd_resource type="Resource" script_class="SpiralPattern" load_steps=4 format=3 uid="uid://jjky5fqn74qk"] [ext_resource type="Resource" uid="uid://bifeoxb6nfykq" path="res://Resources/Bullets/Boss/Rumia/Rumia_Red_Chase_Bullet.tres" id="1_lasr5"] +[ext_resource type="Script" uid="uid://b5s5mjuk1rng5" path="res://Scripts/Resources/TimeModifier.cs" id="2_ho5ah"] [ext_resource type="Script" uid="uid://c0ndqalsc4jve" path="res://Scripts/AttackPatterns/SpiralPattern.cs" id="3_ryait"] [resource] @@ -15,4 +16,12 @@ burstInterval = 0.3 ShotsPerBurst = 100 BurstRate = 0.0 _targetPlayer = true +OverrideOwner = false +Owner = 0 +OverrideDamageType = false +DamageType = 0 +OverrideControllable = false +Controllable = false +OverrideCreationModifier = false +TimeModifiers = Array[ExtResource("2_ho5ah")]([]) WaitForCompletion = true diff --git a/Resources/Patterns/rumia_ns_2.tres b/Resources/Patterns/rumia_ns_2.tres index 4e9a3427..3e05f165 100644 --- a/Resources/Patterns/rumia_ns_2.tres +++ b/Resources/Patterns/rumia_ns_2.tres @@ -1,8 +1,9 @@ -[gd_resource type="Resource" script_class="PatternGroup" load_steps=12 format=3 uid="uid://du2kuv125vbrx"] +[gd_resource type="Resource" script_class="PatternGroup" load_steps=13 format=3 uid="uid://du2kuv125vbrx"] [ext_resource type="PackedScene" uid="uid://dre2wvw4pa3hc" path="res://Scenes/Weapons/Bullets/enemyBullet_mid_blue.tscn" id="1_4xpdn"] [ext_resource type="Script" uid="uid://c0ndqalsc4jve" path="res://Scripts/AttackPatterns/SpiralPattern.cs" id="2_ee42k"] [ext_resource type="Script" uid="uid://dslyrfcej3g2n" path="res://Scripts/Resources/BulletResource.cs" id="2_gfvud"] +[ext_resource type="Script" uid="uid://b5s5mjuk1rng5" path="res://Scripts/Resources/TimeModifier.cs" id="3_fgjeq"] [ext_resource type="PackedScene" uid="uid://dohakkayqj4w2" path="res://Scenes/Weapons/Bullets/enemyBullet_green.tscn" id="3_gr7a3"] [ext_resource type="Script" uid="uid://cbafxkmgns6ry" path="res://Scripts/Resources/PatternGroup.cs" id="3_jvysx"] @@ -31,6 +32,14 @@ burstInterval = 2.0 ShotsPerBurst = 100 BurstRate = 0.0 _targetPlayer = false +OverrideOwner = false +Owner = 0 +OverrideDamageType = false +DamageType = 0 +OverrideControllable = false +Controllable = false +OverrideCreationModifier = false +TimeModifiers = Array[ExtResource("3_fgjeq")]([]) WaitForCompletion = true [sub_resource type="Resource" id="Resource_wtj61"] @@ -58,6 +67,14 @@ burstInterval = 2.0 ShotsPerBurst = 100 BurstRate = 0.0 _targetPlayer = false +OverrideOwner = false +Owner = 0 +OverrideDamageType = false +DamageType = 0 +OverrideControllable = false +Controllable = false +OverrideCreationModifier = false +TimeModifiers = Array[ExtResource("3_fgjeq")]([]) WaitForCompletion = true [sub_resource type="Resource" id="Resource_qbq0m"] @@ -85,6 +102,14 @@ burstInterval = 2.0 ShotsPerBurst = 100 BurstRate = 0.0 _targetPlayer = false +OverrideOwner = false +Owner = 0 +OverrideDamageType = false +DamageType = 0 +OverrideControllable = false +Controllable = false +OverrideCreationModifier = false +TimeModifiers = Array[ExtResource("3_fgjeq")]([]) WaitForCompletion = true [resource] diff --git a/Scenes/Maps/PlayerFSMTest.tscn b/Scenes/Maps/PlayerFSMTest.tscn index 9b21466a..2d76e403 100644 --- a/Scenes/Maps/PlayerFSMTest.tscn +++ b/Scenes/Maps/PlayerFSMTest.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=71 format=4 uid="uid://dqyfnby0t7gu1"] +[gd_scene load_steps=72 format=4 uid="uid://dqyfnby0t7gu1"] [ext_resource type="Script" uid="uid://doxmbokehw8ci" path="res://Scripts/GameManager.cs" id="1_c3v4x"] [ext_resource type="Resource" uid="uid://cs3ihltcn2166" path="res://Resources/Items/IcicleGun.tres" id="3_6314l"] @@ -53,6 +53,7 @@ [ext_resource type="Script" uid="uid://c1gu44a1kkmt1" path="res://Scripts/Actors/ScriptableBulletsEmitter.cs" id="38_m2f1m"] [ext_resource type="Script" uid="uid://bngko08ho85p6" path="res://Scripts/Resources/BulletScript.cs" id="39_83jc5"] [ext_resource type="Resource" uid="uid://dqnvesdj0dk3v" path="res://Resources/Bullets/simple_enemy_bullet.tres" id="39_b0wyy"] +[ext_resource type="Script" uid="uid://b5s5mjuk1rng5" path="res://Scripts/Resources/TimeModifier.cs" id="40_4mkc6"] [ext_resource type="Script" uid="uid://c0ndqalsc4jve" path="res://Scripts/AttackPatterns/SpiralPattern.cs" id="40_o56je"] [ext_resource type="Script" uid="uid://c6467d6yx50qh" path="res://Scripts/Components/BulletSpawner.cs" id="43_b8ffn"] [ext_resource type="PackedScene" uid="uid://b7gkxlll3b1eg" path="res://Scenes/Activable/FloorEmitter.tscn" id="44_b8ffn"] @@ -96,6 +97,14 @@ burstInterval = 0.5 ShotsPerBurst = 100 BurstRate = 0.0 _targetPlayer = false +OverrideOwner = false +Owner = 0 +OverrideDamageType = false +DamageType = 0 +OverrideControllable = false +Controllable = false +OverrideCreationModifier = false +TimeModifiers = Array[ExtResource("40_4mkc6")]([]) WaitForCompletion = true metadata/_custom_type_script = "uid://c0ndqalsc4jve" @@ -116,10 +125,18 @@ burstInterval = 0.5 ShotsPerBurst = 100 BurstRate = 0.0 _targetPlayer = false +OverrideOwner = false +Owner = 0 +OverrideDamageType = false +DamageType = 0 +OverrideControllable = false +Controllable = false +OverrideCreationModifier = false +TimeModifiers = Array[ExtResource("40_4mkc6")]([]) WaitForCompletion = true metadata/_custom_type_script = "uid://c0ndqalsc4jve" -[sub_resource type="Resource" id="Resource_b8ffn"] +[sub_resource type="Resource" id="Resource_64bae"] resource_local_to_scene = true script = ExtResource("39_83jc5") Patterns = Array[Object]([SubResource("Resource_kuo18")]) @@ -356,7 +373,7 @@ EmitOnStart = true [node name="FloorEmitter2" parent="Tilemaps/Actors" instance=ExtResource("44_b8ffn")] position = Vector2(601, 147) -Script = SubResource("Resource_b8ffn") +Script = SubResource("Resource_64bae") InvertSignal = true EmitOnStart = true diff --git a/Scenes/test.tscn b/Scenes/test.tscn index 1fd0790b..368e6a20 100644 --- a/Scenes/test.tscn +++ b/Scenes/test.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=133 format=4 uid="uid://bv451a8wgty4u"] +[gd_scene load_steps=134 format=4 uid="uid://bv451a8wgty4u"] [ext_resource type="Script" uid="uid://doxmbokehw8ci" path="res://Scripts/GameManager.cs" id="1_8tmoj"] [ext_resource type="PackedScene" uid="uid://c4pr2707hbeph" path="res://Scenes/Actors/fsm_player.tscn" id="2_ksslq"] @@ -103,6 +103,7 @@ [ext_resource type="Resource" uid="uid://cmra7n6so1x4u" path="res://Resources/BulletScripts/Basic_Enemy_Emitter_Spiral_Bullets.tres" id="95_7m6n7"] [ext_resource type="Resource" uid="uid://dodwpect0ldjf" path="res://Resources/Items/Heart_Pickup.tres" id="95_srv0g"] [ext_resource type="PackedScene" uid="uid://nupd3pg74vua" path="res://Scenes/Activable/ScriptableInvisibleEmitter.tscn" id="96_ygp23"] +[ext_resource type="Script" uid="uid://b5s5mjuk1rng5" path="res://Scripts/Resources/TimeModifier.cs" id="97_gvbi8"] [ext_resource type="Resource" uid="uid://dtkti2rjlcp3u" path="res://Resources/Bullets/Fire_Emitter_Bullet.tres" id="97_xwjvv"] [ext_resource type="Script" uid="uid://c0ndqalsc4jve" path="res://Scripts/AttackPatterns/SpiralPattern.cs" id="98_gvbi8"] [ext_resource type="Script" uid="uid://bngko08ho85p6" path="res://Scripts/Resources/BulletScript.cs" id="99_j6vrf"] @@ -215,7 +216,7 @@ ActivationType = 0 Targets = Array[NodePath]([NodePath("../Rumia")]) WaitForCompletion = true -[sub_resource type="Resource" id="Resource_xwjvv"] +[sub_resource type="Resource" id="Resource_j6vrf"] resource_local_to_scene = true script = ExtResource("49_0si7g") Target = NodePath(".") @@ -242,6 +243,14 @@ burstInterval = 0.5 ShotsPerBurst = 100 BurstRate = 0.0 _targetPlayer = false +OverrideOwner = false +Owner = 0 +OverrideDamageType = false +DamageType = 0 +OverrideControllable = false +Controllable = false +OverrideCreationModifier = false +TimeModifiers = Array[ExtResource("97_gvbi8")]([]) WaitForCompletion = true metadata/_custom_type_script = "uid://c0ndqalsc4jve" @@ -866,7 +875,7 @@ Events = Array[ExtResource("44_mah4x")]([SubResource("Resource_068l7"), SubResou [node name="BossBattleStartScript" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("43_kf3qc")] position = Vector2(-1487, -396) -Events = Array[ExtResource("44_mah4x")]([SubResource("Resource_4f4id"), SubResource("Resource_s2o7m"), SubResource("Resource_b1dht"), SubResource("Resource_xrgpy"), SubResource("Resource_xwjvv")]) +Events = Array[ExtResource("44_mah4x")]([SubResource("Resource_4f4id"), SubResource("Resource_s2o7m"), SubResource("Resource_b1dht"), SubResource("Resource_xrgpy"), SubResource("Resource_j6vrf")]) [node name="Enemy13" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("47_u1ve6")] position = Vector2(-1657, -788) @@ -1064,7 +1073,7 @@ position = Vector2(-2000, -736) [node name="ControlPad8" parent="Parallax2D/Factory Tilemaps/LevelProps" node_paths=PackedStringArray("Targets") instance=ExtResource("12_hfkf1")] position = Vector2(-2027, -735) Targets = [NodePath("../HorizontalForceField")] -Requirements = Array[ExtResource("6_8tdlb")]([ExtResource("84_ma1ta")]) +Requirements = [ExtResource("84_ma1ta")] [node name="Ammo6" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("34_17pjh")] position = Vector2(-872, -220) @@ -1176,7 +1185,6 @@ InvertSignal = true position = Vector2(-722, 56) rotation = -1.5708 Script = SubResource("Resource_f37sa") -InvertSignal = true [node name="InvisibleBulletEmitter2" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("96_ygp23")] position = Vector2(-1492, -168) diff --git a/Scripts/AttackPatterns/LaserPattern.cs b/Scripts/AttackPatterns/LaserPattern.cs index 79444419..c4799832 100644 --- a/Scripts/AttackPatterns/LaserPattern.cs +++ b/Scripts/AttackPatterns/LaserPattern.cs @@ -12,9 +12,9 @@ public partial class LaserPattern : SpiralPattern [ExportGroup("Laser")][Export] public Color PreFireColor { get; set; } = new Color(1, 0, 0, 0.5f); // Thin red beam [ExportGroup("Laser")][Export] public Color LethalColor { get; set; } = new Color(1, 0, 0, 1.0f); // Thicker beam - protected override BulletInfo MakeBullet(Vector2 position, Vector2 direction, float angleOffset) + protected override BulletInfo MakeBullet(Vector2 position, int count = 1, float spread = 0f, float rotationOffset = 0f) { - var bf = base.MakeBullet(position, direction, angleOffset); + var bf = base.MakeBullet(position, count, spread, rotationOffset); bf.IsLaser = true; bf.PreFireTime = PreFireTime; diff --git a/Scripts/AttackPatterns/SpiralPattern.cs b/Scripts/AttackPatterns/SpiralPattern.cs index fb1483a4..261a22f8 100644 --- a/Scripts/AttackPatterns/SpiralPattern.cs +++ b/Scripts/AttackPatterns/SpiralPattern.cs @@ -36,13 +36,56 @@ public partial class SpiralPattern : AttackPattern // [ExportGroup("Modifiers")] [Export] private BulletCreationModifier _modifier; // [ExportGroup("Modifiers")] [Export] private Array _timeModifiers; [ExportCategory("Other")] [Export] public bool _targetPlayer = false; + + [ExportCategory("Overrides")] + [Export] public bool OverrideOwner { get; private set; } = false; + [Export] public BulletOwner Owner { get; private set; } = BulletOwner.None; + [Export] public bool OverrideDamageType { get; private set; } = false; + [Export] public DamageType DamageType { get; private set; } = DamageType.Neutral; + [Export] public bool OverrideControllable { get; private set; } = false; + [Export] public bool Controllable { get; private set; } = false; - protected virtual BulletInfo MakeBullet(Vector2 position, Vector2 direction, float angleOffset) + [ExportCategory("Extra Modifiers")] + [Export] + public bool OverrideCreationModifier { get; private set; } = false; + + [Export] public BulletCreationModifier Modifier; + [Export] public Array TimeModifiers = []; + + protected virtual BulletInfo MakeBullet(Vector2 position, int count = 1, float spread = 0f, float rotationOffset = 0f) { - var bl = BulletResource.MakeBullet(position, bulletCount, angleOffset); - bl.Direction = direction; + var bullet = this.BulletResource.MakeBullet(position, count, + spread, rotationOffset); - return bl; + if (OverrideOwner) + { + bullet.Owner = this.Owner; + } + + if (OverrideDamageType) + { + bullet.DamageType = DamageType; + } + + if (OverrideControllable) + { + bullet.Controllabe = Controllable; + } + + if (OverrideCreationModifier) + { + bullet.Modifier = this.Modifier; + } + + if (TimeModifiers.Count != 0) + { + bullet.TimeModifiers.AddRange(TimeModifiers); + } + + //var bl = BulletResource.MakeBullet(position, bulletCount, angleOffset); + //bl.Direction = direction; + + return bullet; // return new BulletInfo() // { @@ -184,8 +227,9 @@ public partial class SpiralPattern : AttackPattern direction = (GameManager.Instance.PlayerPosition.Value - Parent.GlobalPosition).Normalized(); } - var bullet = pattern.BulletResource.MakeBullet(Parent.GlobalPosition, pattern.bulletCount, + var bullet = pattern.MakeBullet(Parent.GlobalPosition, pattern.bulletCount, pattern.spread, angleOffset); + bullet.Direction = direction; //spawner.SpawnBullet(MakeBullet(Boss.GlobalPosition, direction, angleOffset));