Boss patterns

This commit is contained in:
Marco 2025-07-01 10:00:02 +02:00
commit 4541c5fbf4
7 changed files with 780 additions and 718 deletions

View file

@ -37,7 +37,7 @@
[ext_resource type="Material" uid="uid://br4foqdn2f8ge" path="res://textures/Manual/Wall_Corner.tres" id="27_c4mw0"] [ext_resource type="Material" uid="uid://br4foqdn2f8ge" path="res://textures/Manual/Wall_Corner.tres" id="27_c4mw0"]
[ext_resource type="Material" uid="uid://bijkqqi8bqi3c" path="res://textures/Floors/Floor26.tres" id="28_btjo4"] [ext_resource type="Material" uid="uid://bijkqqi8bqi3c" path="res://textures/Floors/Floor26.tres" id="28_btjo4"]
[ext_resource type="Material" uid="uid://fc0n5jo05seu" path="res://textures/Manual/Wall_Light_Test.tres" id="30_pvlbf"] [ext_resource type="Material" uid="uid://fc0n5jo05seu" path="res://textures/Manual/Wall_Light_Test.tres" id="30_pvlbf"]
[ext_resource type="Material" uid="uid://dfs1tc2ry78pb" path="res://textures/Manual/Chevron.tres" id="30_um16p"] [ext_resource type="Material" path="res://textures/Manual/Chevron.tres" id="30_um16p"]
[ext_resource type="Material" uid="uid://0x6sr7ehv4t1" path="res://textures/Floors/Floor167.tres" id="31_bbydx"] [ext_resource type="Material" uid="uid://0x6sr7ehv4t1" path="res://textures/Floors/Floor167.tres" id="31_bbydx"]
[ext_resource type="Script" uid="uid://crjplbs250g75" path="res://3D/TrenchBroom/EntityScripts/Lights/light_spot.gd" id="31_c2mph"] [ext_resource type="Script" uid="uid://crjplbs250g75" path="res://3D/TrenchBroom/EntityScripts/Lights/light_spot.gd" id="31_c2mph"]
[ext_resource type="Material" uid="uid://l3g1l0y47c7r" path="res://textures/Manual/Electric_Panel_Wall.tres" id="32_k4tgc"] [ext_resource type="Material" uid="uid://l3g1l0y47c7r" path="res://textures/Manual/Electric_Panel_Wall.tres" id="32_k4tgc"]

File diff suppressed because one or more lines are too long

View file

@ -13,7 +13,7 @@ rotationSpeed = 0.0
_rotationOffset = 0.0 _rotationOffset = 0.0
duration = 2.0 duration = 2.0
spread = 0.0 spread = 0.0
burstInterval = 0.3 burstInterval = 0.1
ShotsPerBurst = 100 ShotsPerBurst = 100
BurstRate = 0.0 BurstRate = 0.0
_targetPlayer = true _targetPlayer = true

View file

@ -5,7 +5,6 @@
[ext_resource type="Script" uid="uid://inasa76li3ym" path="res://Scripts/Resources/ScriptableBullets/BossScript.cs" id="2_t8f0y"] [ext_resource type="Script" uid="uid://inasa76li3ym" path="res://Scripts/Resources/ScriptableBullets/BossScript.cs" id="2_t8f0y"]
[ext_resource type="Resource" uid="uid://bmdxhsjh2qla6" path="res://Resources/BossPhases/Rumia/Rumia_NS_1_Chase.tres" id="3_ovn8y"] [ext_resource type="Resource" uid="uid://bmdxhsjh2qla6" path="res://Resources/BossPhases/Rumia/Rumia_NS_1_Chase.tres" id="3_ovn8y"]
[ext_resource type="Resource" uid="uid://chcinoo8pkkwq" path="res://Resources/Patterns/Rumia_NS_2_3D.tres" id="5_mi6hp"] [ext_resource type="Resource" uid="uid://chcinoo8pkkwq" path="res://Resources/Patterns/Rumia_NS_2_3D.tres" id="5_mi6hp"]
[ext_resource type="Script" uid="uid://cg7gi3tva4gvw" path="res://Scripts/AttackPatterns/WaitPattern.cs" id="6_xfnue"]
[sub_resource type="Resource" id="Resource_xfnue"] [sub_resource type="Resource" id="Resource_xfnue"]
script = ExtResource("2_mi6hp") script = ExtResource("2_mi6hp")
@ -24,21 +23,35 @@ moveDuration = 1.0
RelativeToPlayer = false RelativeToPlayer = false
transitionType = 0 transitionType = 0
easeType = 2 easeType = 2
WaitForCompletion = true WaitForCompletion = false
metadata/_custom_type_script = "uid://fo8sf11p058s" metadata/_custom_type_script = "uid://fo8sf11p058s"
[sub_resource type="Resource" id="Resource_0t311"] [sub_resource type="Resource" id="Resource_ovn8y"]
script = ExtResource("6_xfnue") script = ExtResource("2_mi6hp")
SecondsToWait = 2.0 relativeTargetPosition = Vector2(4, 0)
WaitForCompletion = true moveDuration = 2.0
metadata/_custom_type_script = "uid://cg7gi3tva4gvw" RelativeToPlayer = true
transitionType = 0
easeType = 2
WaitForCompletion = false
metadata/_custom_type_script = "uid://fo8sf11p058s"
[sub_resource type="Resource" id="Resource_mi6hp"]
script = ExtResource("2_mi6hp")
relativeTargetPosition = Vector2(0, 0)
moveDuration = 1.0
RelativeToPlayer = false
transitionType = 0
easeType = 2
WaitForCompletion = false
metadata/_custom_type_script = "uid://fo8sf11p058s"
[sub_resource type="Resource" id="Resource_l0s11"] [sub_resource type="Resource" id="Resource_l0s11"]
script = ExtResource("1_k3wbt") script = ExtResource("1_k3wbt")
PhaseName = "" PhaseName = ""
Threshold = 0 Threshold = 0
PlayAnimation = false PlayAnimation = false
Patterns = Array[Object]([SubResource("Resource_xfnue"), ExtResource("3_ovn8y"), SubResource("Resource_lrsat"), ExtResource("5_mi6hp"), SubResource("Resource_0t311")]) Patterns = Array[Object]([SubResource("Resource_xfnue"), ExtResource("3_ovn8y"), ExtResource("5_mi6hp"), SubResource("Resource_lrsat"), ExtResource("3_ovn8y"), ExtResource("5_mi6hp"), SubResource("Resource_ovn8y"), ExtResource("3_ovn8y"), ExtResource("5_mi6hp"), SubResource("Resource_mi6hp"), ExtResource("3_ovn8y"), ExtResource("5_mi6hp")])
metadata/_custom_type_script = "uid://cdd6q2h0t1hhq" metadata/_custom_type_script = "uid://cdd6q2h0t1hhq"
[resource] [resource]

View file

@ -10,7 +10,7 @@
script = ExtResource("3_si5ca") script = ExtResource("3_si5ca")
BulletResource = ExtResource("1_22yix") BulletResource = ExtResource("1_22yix")
EmitterOffset = Vector3(0, 0, 0) EmitterOffset = Vector3(0, 0, 0)
bulletCount = 10 bulletCount = 14
rotationSpeed = 120.0 rotationSpeed = 120.0
_rotationOffset = 0.0 _rotationOffset = 0.0
duration = 0.4 duration = 0.4
@ -35,7 +35,7 @@ metadata/_custom_type_script = "uid://bxiprx5nwmpnu"
script = ExtResource("3_si5ca") script = ExtResource("3_si5ca")
BulletResource = ExtResource("4_vxh5u") BulletResource = ExtResource("4_vxh5u")
EmitterOffset = Vector3(0, 0, 0) EmitterOffset = Vector3(0, 0, 0)
bulletCount = 16 bulletCount = 18
rotationSpeed = 0.0 rotationSpeed = 0.0
_rotationOffset = 0.0 _rotationOffset = 0.0
duration = 0.4 duration = 0.4
@ -60,7 +60,7 @@ metadata/_custom_type_script = "uid://bxiprx5nwmpnu"
script = ExtResource("3_si5ca") script = ExtResource("3_si5ca")
BulletResource = ExtResource("4_vxh5u") BulletResource = ExtResource("4_vxh5u")
EmitterOffset = Vector3(0, 0, 0) EmitterOffset = Vector3(0, 0, 0)
bulletCount = 16 bulletCount = 18
rotationSpeed = 60.0 rotationSpeed = 60.0
_rotationOffset = 0.0 _rotationOffset = 0.0
duration = 0.4 duration = 0.4
@ -85,7 +85,7 @@ metadata/_custom_type_script = "uid://bxiprx5nwmpnu"
script = ExtResource("3_si5ca") script = ExtResource("3_si5ca")
BulletResource = ExtResource("1_22yix") BulletResource = ExtResource("1_22yix")
EmitterOffset = Vector3(0, 0, 0) EmitterOffset = Vector3(0, 0, 0)
bulletCount = 10 bulletCount = 14
rotationSpeed = 60.0 rotationSpeed = 60.0
_rotationOffset = 0.0 _rotationOffset = 0.0
duration = 0.4 duration = 0.4
@ -110,7 +110,7 @@ metadata/_custom_type_script = "uid://bxiprx5nwmpnu"
script = ExtResource("3_si5ca") script = ExtResource("3_si5ca")
BulletResource = ExtResource("1_22yix") BulletResource = ExtResource("1_22yix")
EmitterOffset = Vector3(0, 0, 0) EmitterOffset = Vector3(0, 0, 0)
bulletCount = 10 bulletCount = 14
rotationSpeed = 60.0 rotationSpeed = 60.0
_rotationOffset = 0.0 _rotationOffset = 0.0
duration = 0.4 duration = 0.4
@ -135,7 +135,7 @@ metadata/_custom_type_script = "uid://bxiprx5nwmpnu"
script = ExtResource("3_si5ca") script = ExtResource("3_si5ca")
BulletResource = ExtResource("4_vxh5u") BulletResource = ExtResource("4_vxh5u")
EmitterOffset = Vector3(0, 0, 0) EmitterOffset = Vector3(0, 0, 0)
bulletCount = 16 bulletCount = 18
rotationSpeed = 60.0 rotationSpeed = 60.0
_rotationOffset = 0.0 _rotationOffset = 0.0
duration = 0.4 duration = 0.4
@ -160,7 +160,7 @@ metadata/_custom_type_script = "uid://bxiprx5nwmpnu"
script = ExtResource("3_si5ca") script = ExtResource("3_si5ca")
BulletResource = ExtResource("1_22yix") BulletResource = ExtResource("1_22yix")
EmitterOffset = Vector3(0, 0, 0) EmitterOffset = Vector3(0, 0, 0)
bulletCount = 10 bulletCount = 14
rotationSpeed = 60.0 rotationSpeed = 60.0
_rotationOffset = 0.0 _rotationOffset = 0.0
duration = 0.4 duration = 0.4

View file

@ -6,10 +6,10 @@ using Godot;
namespace Cirno.Scripts.Actors; namespace Cirno.Scripts.Actors;
[Tool] [Tool]
public partial class EnemyMarker3D : PreviewMarker3D public partial class EnemyMarker3D : PreviewMarker3D, IActivable
{ {
private EnemyResource _enemy; private EnemyResource _enemy;
[Export] [Export]
public EnemyResource Enemy public EnemyResource Enemy
{ {
@ -25,10 +25,32 @@ public partial class EnemyMarker3D : PreviewMarker3D
} }
} }
[Export] public bool AutoSpawn { get; set; } = false; private bool _autoSpawn = false;
[Export]
public bool AutoSpawn
{
get => _autoSpawn;
set
{
_autoSpawn = value;
if (Engine.IsEditorHint())
{
if (_autoSpawn)
{
SetSpriteAlpha(1);
}
else
{
SetSpriteAlpha(0.5f);
}
}
}
}
private EnemyProxy3D _spawnedEnemy; private EnemyProxy3D _spawnedEnemy;
public override void _Ready() public override void _Ready()
{ {
base._Ready(); base._Ready();
@ -38,10 +60,10 @@ public partial class EnemyMarker3D : PreviewMarker3D
Spawn(false); Spawn(false);
} }
} }
public EnemyProxy3D Spawn(bool deleteMarker) public EnemyProxy3D Spawn(bool deleteMarker)
{ {
if (Engine.IsEditorHint()) return null ; if (Engine.IsEditorHint()) return null;
if (Enemy is null) return null; if (Enemy is null) return null;
if (_spawnedEnemy is not null) return _spawnedEnemy; if (_spawnedEnemy is not null) return _spawnedEnemy;
@ -49,21 +71,33 @@ public partial class EnemyMarker3D : PreviewMarker3D
{ {
this.QueueFree(); this.QueueFree();
} }
var enemyScene = GD.Load<PackedScene>(Enemy.PrefabPath); var enemyScene = GD.Load<PackedScene>(Enemy.PrefabPath);
_spawnedEnemy = this.CreateSibling<EnemyProxy3D>(enemyScene); _spawnedEnemy = this.CreateSibling<EnemyProxy3D>(enemyScene);
_spawnedEnemy.Init(Enemy); _spawnedEnemy.Init(Enemy);
//Spawned = true; //Spawned = true;
_spawnedEnemy.Death += SpawnedEnemyOnDeath; _spawnedEnemy.Death += SpawnedEnemyOnDeath;
return _spawnedEnemy; return _spawnedEnemy;
} }
private void SpawnedEnemyOnDeath(EnemyProxy3D enemy) private void SpawnedEnemyOnDeath(EnemyProxy3D enemy)
{ {
_spawnedEnemy.Death -= SpawnedEnemyOnDeath; _spawnedEnemy.Death -= SpawnedEnemyOnDeath;
_spawnedEnemy = null; _spawnedEnemy = null;
//Spawned = false; //Spawned = false;
} }
public bool Activate(ActivationType activationType = ActivationType.Toggle)
{
if (Engine.IsEditorHint()) return false;
Spawn(false);
return _spawnedEnemy is not null;
}
public void Toggle()
{
Activate();
}
} }

View file

@ -118,7 +118,19 @@ public partial class PreviewMarker3D : Marker3D
_sprite.SetBillboardMode(Billboard ? BaseMaterial3D.BillboardModeEnum.Enabled : BaseMaterial3D.BillboardModeEnum.Disabled); _sprite.SetBillboardMode(Billboard ? BaseMaterial3D.BillboardModeEnum.Enabled : BaseMaterial3D.BillboardModeEnum.Disabled);
_sprite.TextureFilter = BaseMaterial3D.TextureFilterEnum.Nearest; _sprite.TextureFilter = BaseMaterial3D.TextureFilterEnum.Nearest;
_sprite.PixelSize = PixelSize; _sprite.PixelSize = PixelSize;
}
protected void SetSpriteAlpha(float alpha)
{
if (!Engine.IsEditorHint()) return;
if (_sprite is not null)
{
GD.Print($"Modulating sprite to {alpha}");
_sprite.SetModulate(new Color(_sprite.Modulate.R, _sprite.Modulate.G, _sprite.Modulate.B, alpha));
}
else
{
GD.Print("Sprite was null");
}
} }
} }