Bullet overrides

This commit is contained in:
Marco 2025-03-18 14:58:18 +01:00
commit 533912ba02
6 changed files with 121 additions and 18 deletions

View file

@ -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

View file

@ -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]

View file

@ -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

View file

@ -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)

View file

@ -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;

View file

@ -36,13 +36,56 @@ public partial class SpiralPattern : AttackPattern
// [ExportGroup("Modifiers")] [Export] private BulletCreationModifier _modifier;
// [ExportGroup("Modifiers")] [Export] private Array<TimeModifier> _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<TimeModifier> 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));