Rumia's patterns

This commit is contained in:
Marco 2025-07-01 18:26:57 +02:00
commit a344ed8b72
12 changed files with 343 additions and 36 deletions

View file

@ -10,7 +10,7 @@ script = ExtResource("1_yfihc")
relativeTargetPosition = Vector2(-4, 0)
moveDuration = 2.0
RelativeToPlayer = true
transitionType = 0
transitionType = 4
easeType = 2
WaitForCompletion = false
metadata/_custom_type_script = "uid://fo8sf11p058s"

View file

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

View file

@ -1,11 +1,15 @@
[gd_resource type="Resource" script_class="BossPhase" load_steps=12 format=3 uid="uid://cwrjsponw40pd"]
[gd_resource type="Resource" script_class="BossPhase" load_steps=24 format=3 uid="uid://cwrjsponw40pd"]
[ext_resource type="Script" uid="uid://cdd6q2h0t1hhq" path="res://Scripts/Resources/BossPhase.cs" id="1_a65t7"]
[ext_resource type="Resource" uid="uid://cvcpb6u6mo8oo" path="res://Resources/Bullets/3D/rice_bullet_small_blue_3D.tres" id="1_d7vfp"]
[ext_resource type="Script" uid="uid://b5s5mjuk1rng5" path="res://Scripts/Resources/TimeModifier.cs" id="2_ali57"]
[ext_resource type="Script" uid="uid://dka43xos84kbw" path="res://Scripts/Resources/Modifiers/DelayedRotationModifier.cs" id="3_gq3ok"]
[ext_resource type="Script" uid="uid://bxiprx5nwmpnu" path="res://Scripts/AttackPatterns/ShootingPattern3D.cs" id="4_38hmx"]
[ext_resource type="Script" uid="uid://cg7gi3tva4gvw" path="res://Scripts/AttackPatterns/WaitPattern.cs" id="5_ali57"]
[ext_resource type="Resource" uid="uid://dpnauedcubupa" path="res://Resources/Bullets/3D/rice_bullet_small_red_3D.tres" id="6_38hmx"]
[ext_resource type="Resource" uid="uid://cgpv0r1bf6emq" path="res://Resources/Bullets/3D/rice_bullet_small_green_3D.tres" id="6_gq3ok"]
[ext_resource type="Script" uid="uid://fo8sf11p058s" path="res://Scripts/Resources/BulletScripts/SimpleMovementPattern3D.cs" id="7_4rhw5"]
[ext_resource type="Resource" uid="uid://1erpxunntcsh" path="res://Resources/Patterns/Rumia_SP1_Part2.tres" id="8_4hlom"]
[ext_resource type="Resource" uid="uid://c0h5eo1lbsofd" path="res://Resources/Patterns/Rumia_SP1_Part2_Predicting.tres" id="9_4hlom"]
[sub_resource type="Resource" id="Resource_r87xf"]
script = ExtResource("3_gq3ok")
@ -70,19 +74,163 @@ OverrideControllable = false
Controllable = false
OverrideCreationModifier = false
TimeModifiers = Array[ExtResource("2_ali57")]([SubResource("Resource_d7vfp")])
WaitForCompletion = true
metadata/_custom_type_script = "uid://bxiprx5nwmpnu"
[sub_resource type="Resource" id="Resource_38hmx"]
script = ExtResource("4_38hmx")
BulletResource = ExtResource("6_gq3ok")
EmitterOffset = Vector3(0, 0, 0)
bulletCount = 20
rotationSpeed = 0.0
_rotationOffset = 22.0
duration = 1.0
spread = 360.0
burstInterval = 2.0
ShotsPerBurst = 100
BurstRate = 0.0
_targetPlayer = false
_predictPlayer = false
OverrideOwner = false
Owner = 0
OverrideDamageType = false
DamageType = 0
OverrideControllable = false
Controllable = false
OverrideCreationModifier = false
TimeModifiers = Array[ExtResource("2_ali57")]([SubResource("Resource_r87xf")])
WaitForCompletion = false
metadata/_custom_type_script = "uid://bxiprx5nwmpnu"
[sub_resource type="Resource" id="Resource_gq3ok"]
script = ExtResource("5_ali57")
SecondsToWait = 2.0
[sub_resource type="Resource" id="Resource_487di"]
script = ExtResource("4_38hmx")
BulletResource = ExtResource("6_gq3ok")
EmitterOffset = Vector3(0, 0, 0)
bulletCount = 20
rotationSpeed = 0.0
_rotationOffset = 22.0
duration = 1.0
spread = 360.0
burstInterval = 2.0
ShotsPerBurst = 100
BurstRate = 0.0
_targetPlayer = false
_predictPlayer = false
OverrideOwner = false
Owner = 0
OverrideDamageType = false
DamageType = 0
OverrideControllable = false
Controllable = false
OverrideCreationModifier = false
TimeModifiers = Array[ExtResource("2_ali57")]([SubResource("Resource_d7vfp")])
WaitForCompletion = true
metadata/_custom_type_script = "uid://cg7gi3tva4gvw"
metadata/_custom_type_script = "uid://bxiprx5nwmpnu"
[sub_resource type="Resource" id="Resource_4rhw5"]
script = ExtResource("4_38hmx")
BulletResource = ExtResource("6_38hmx")
EmitterOffset = Vector3(0, 0, 0)
bulletCount = 20
rotationSpeed = 0.0
_rotationOffset = 0.0
duration = 1.0
spread = 360.0
burstInterval = 2.0
ShotsPerBurst = 100
BurstRate = 0.0
_targetPlayer = false
_predictPlayer = false
OverrideOwner = false
Owner = 0
OverrideDamageType = false
DamageType = 0
OverrideControllable = false
Controllable = false
OverrideCreationModifier = false
TimeModifiers = Array[ExtResource("2_ali57")]([SubResource("Resource_r87xf")])
WaitForCompletion = false
metadata/_custom_type_script = "uid://bxiprx5nwmpnu"
[sub_resource type="Resource" id="Resource_xmchp"]
script = ExtResource("4_38hmx")
BulletResource = ExtResource("6_38hmx")
EmitterOffset = Vector3(0, 0, 0)
bulletCount = 20
rotationSpeed = 0.0
_rotationOffset = 0.0
duration = 1.0
spread = 360.0
burstInterval = 2.0
ShotsPerBurst = 100
BurstRate = 0.0
_targetPlayer = false
_predictPlayer = false
OverrideOwner = false
Owner = 0
OverrideDamageType = false
DamageType = 0
OverrideControllable = false
Controllable = false
OverrideCreationModifier = false
TimeModifiers = Array[ExtResource("2_ali57")]([SubResource("Resource_d7vfp")])
WaitForCompletion = true
metadata/_custom_type_script = "uid://bxiprx5nwmpnu"
[sub_resource type="Resource" id="Resource_cprus"]
script = ExtResource("7_4rhw5")
relativeTargetPosition = Vector2(4, 2)
moveDuration = 2.0
RelativeToPlayer = true
transitionType = 0
easeType = 2
WaitForCompletion = true
metadata/_custom_type_script = "uid://fo8sf11p058s"
[sub_resource type="Resource" id="Resource_ddofg"]
script = ExtResource("7_4rhw5")
relativeTargetPosition = Vector2(2, 0)
moveDuration = 0.4
RelativeToPlayer = true
transitionType = 0
easeType = 2
WaitForCompletion = true
metadata/_custom_type_script = "uid://fo8sf11p058s"
[sub_resource type="Resource" id="Resource_x84ys"]
script = ExtResource("7_4rhw5")
relativeTargetPosition = Vector2(-2, 0)
moveDuration = 0.4
RelativeToPlayer = true
transitionType = 0
easeType = 2
WaitForCompletion = true
metadata/_custom_type_script = "uid://fo8sf11p058s"
[sub_resource type="Resource" id="Resource_46ksb"]
script = ExtResource("7_4rhw5")
relativeTargetPosition = Vector2(-4, 1)
moveDuration = 0.4
RelativeToPlayer = true
transitionType = 0
easeType = 2
WaitForCompletion = true
metadata/_custom_type_script = "uid://fo8sf11p058s"
[sub_resource type="Resource" id="Resource_78gkf"]
script = ExtResource("7_4rhw5")
relativeTargetPosition = Vector2(0, 0)
moveDuration = 2.0
RelativeToPlayer = false
transitionType = 0
easeType = 2
WaitForCompletion = true
metadata/_custom_type_script = "uid://fo8sf11p058s"
[resource]
script = ExtResource("1_a65t7")
PhaseName = "Darkness Sign \"Demarcation\""
Threshold = 50
PlayAnimation = false
Patterns = [SubResource("Resource_4hlom"), SubResource("Resource_ali57"), SubResource("Resource_gq3ok")]
Patterns = [SubResource("Resource_4hlom"), SubResource("Resource_ali57"), SubResource("Resource_38hmx"), SubResource("Resource_487di"), SubResource("Resource_4rhw5"), SubResource("Resource_xmchp"), SubResource("Resource_cprus"), ExtResource("8_4hlom"), SubResource("Resource_ddofg"), ExtResource("9_4hlom"), SubResource("Resource_x84ys"), ExtResource("8_4hlom"), SubResource("Resource_46ksb"), ExtResource("9_4hlom"), SubResource("Resource_78gkf")]
metadata/_custom_type_script = "uid://cdd6q2h0t1hhq"

View file

@ -9,5 +9,5 @@
[resource]
script = ExtResource("2_t8f0y")
BossName = &"Rumia"
Phases = Array[ExtResource("1_k3wbt")]([ExtResource("3_mi6hp"), ExtResource("2_ovn8y"), ExtResource("4_xfnue")])
Phases = Array[ExtResource("1_k3wbt")]([ExtResource("2_ovn8y"), ExtResource("3_mi6hp"), ExtResource("4_xfnue")])
metadata/_custom_type_script = "uid://inasa76li3ym"

View file

@ -0,0 +1,23 @@
[gd_resource type="Resource" script_class="BulletResource" load_steps=4 format=3 uid="uid://cgpv0r1bf6emq"]
[ext_resource type="PackedScene" uid="uid://d28e1t2c0lwbp" path="res://Scenes/Weapons/base_enemy_bullet_3D.tscn" id="1_lhl4w"]
[ext_resource type="Texture2D" uid="uid://dtgfe64ck2aey" path="res://Sprites/Bullets/rice_bullet_green_small.png" id="2_lhl4w"]
[ext_resource type="Script" uid="uid://dslyrfcej3g2n" path="res://Scripts/Resources/BulletResource.cs" id="3_ccbg1"]
[resource]
script = ExtResource("3_ccbg1")
BulletScene = ExtResource("1_lhl4w")
BulletSprite = ExtResource("2_lhl4w")
BulletSize = 0.08
BulletSpeed = 2.5
Direction = Vector2(1, 0)
BulletDamage = 20.0
MaxDamage = 1.0
Knockback = 1.0
LifeTime = 20.0
Owner = 2
DamageType = 0
GrazeValue = 0.2
Attributes = 98
TimeModifiers = []
metadata/_custom_type_script = "uid://dslyrfcej3g2n"

View file

@ -0,0 +1,23 @@
[gd_resource type="Resource" script_class="BulletResource" load_steps=4 format=3 uid="uid://dpnauedcubupa"]
[ext_resource type="PackedScene" uid="uid://d28e1t2c0lwbp" path="res://Scenes/Weapons/base_enemy_bullet_3D.tscn" id="1_fu57v"]
[ext_resource type="Texture2D" uid="uid://iwbak4pr67rw" path="res://Sprites/Bullets/rice_bullet_red_small.png" id="2_fu57v"]
[ext_resource type="Script" uid="uid://dslyrfcej3g2n" path="res://Scripts/Resources/BulletResource.cs" id="3_xt0ob"]
[resource]
script = ExtResource("3_xt0ob")
BulletScene = ExtResource("1_fu57v")
BulletSprite = ExtResource("2_fu57v")
BulletSize = 0.08
BulletSpeed = 2.5
Direction = Vector2(1, 0)
BulletDamage = 20.0
MaxDamage = 1.0
Knockback = 1.0
LifeTime = 20.0
Owner = 2
DamageType = 0
GrazeValue = 0.2
Attributes = 98
TimeModifiers = []
metadata/_custom_type_script = "uid://dslyrfcej3g2n"

View file

@ -0,0 +1,23 @@
[gd_resource type="Resource" script_class="BulletResource" load_steps=4 format=3 uid="uid://3rtuv74vgmnf"]
[ext_resource type="PackedScene" uid="uid://d28e1t2c0lwbp" path="res://Scenes/Weapons/base_enemy_bullet_3D.tscn" id="1_yu0o4"]
[ext_resource type="Texture2D" uid="uid://bckdbxo607h5n" path="res://Sprites/Bullets/rice_bullet_yellow.png" id="2_yu0o4"]
[ext_resource type="Script" uid="uid://dslyrfcej3g2n" path="res://Scripts/Resources/BulletResource.cs" id="3_ugtyo"]
[resource]
script = ExtResource("3_ugtyo")
BulletScene = ExtResource("1_yu0o4")
BulletSprite = ExtResource("2_yu0o4")
BulletSize = 0.08
BulletSpeed = 2.5
Direction = Vector2(1, 0)
BulletDamage = 20.0
MaxDamage = 1.0
Knockback = 1.0
LifeTime = 20.0
Owner = 2
DamageType = 0
GrazeValue = 0.2
Attributes = 98
TimeModifiers = []
metadata/_custom_type_script = "uid://dslyrfcej3g2n"

View file

@ -1,24 +1,22 @@
[gd_resource type="Resource" script_class="BulletResource" load_steps=3 format=3 uid="uid://ct86iyo1nbo30"]
[gd_resource type="Resource" script_class="BulletResource" load_steps=4 format=3 uid="uid://ct86iyo1nbo30"]
[ext_resource type="PackedScene" uid="uid://dtcn342i4l847" path="res://Scenes/Weapons/Bullets/enemyBullet_small_green_3D.tscn" id="1_wkmu4"]
[ext_resource type="Texture2D" uid="uid://dmwi86k7hr8sl" path="res://Sprites/Bullets/small_bullet_green.png" id="2_6qn5t"]
[ext_resource type="Script" uid="uid://dslyrfcej3g2n" path="res://Scripts/Resources/BulletResource.cs" id="2_krx1r"]
[resource]
script = ExtResource("2_krx1r")
BulletScene = ExtResource("1_wkmu4")
BulletSprite = ExtResource("2_6qn5t")
BulletSize = 0.08
BulletSpeed = 6.0
Direction = Vector2(1, 0)
BulletDamage = 20.0
MaxDamage = 1.0
Knockback = 1.0
LifeTime = 20.0
DestroyOnCollision = false
Owner = 2
DamageType = 0
RotateSprite = false
Controllable = false
Freezable = true
Grazeable = true
GrazeValue = 1.0
Attributes = 34
TimeModifiers = []

View file

@ -0,0 +1,46 @@
[gd_resource type="Resource" script_class="ShootingPattern3D" load_steps=8 format=3 uid="uid://1erpxunntcsh"]
[ext_resource type="Resource" uid="uid://ct86iyo1nbo30" path="res://Resources/Bullets/Boss/Rumia/Rumia_Green_Bullet_Small_3D.tres" id="1_u1m81"]
[ext_resource type="Script" uid="uid://b5s5mjuk1rng5" path="res://Scripts/Resources/TimeModifier.cs" id="2_hpyh2"]
[ext_resource type="Script" uid="uid://c6kkaq6j4thug" path="res://Scripts/Resources/Modifiers/DelayedPlayerFacingModifier.cs" id="3_p1i4g"]
[ext_resource type="Script" uid="uid://cq7pfooyqayc4" path="res://Scripts/Resources/Modifiers/DelayedSpeedModifier.cs" id="4_6wavh"]
[ext_resource type="Script" uid="uid://bxiprx5nwmpnu" path="res://Scripts/AttackPatterns/ShootingPattern3D.cs" id="5_fqpy4"]
[sub_resource type="Resource" id="Resource_xt3r4"]
script = ExtResource("3_p1i4g")
TimeInSeconds = 0.5
ModifierType = 2
Value = 0.0
Continuous = false
[sub_resource type="Resource" id="Resource_wk3la"]
script = ExtResource("4_6wavh")
TimeInSeconds = 0.8
ModifierType = 0
Value = 5.0
Continuous = false
[resource]
script = ExtResource("5_fqpy4")
BulletResource = ExtResource("1_u1m81")
EmitterOffset = Vector3(0, 0, 0)
bulletCount = 12
rotationSpeed = 0.0
_rotationOffset = 45.0
duration = 0.8
spread = 180.0
burstInterval = 1.0
ShotsPerBurst = 100
BurstRate = 0.0
_targetPlayer = true
_predictPlayer = false
OverrideOwner = false
Owner = 0
OverrideDamageType = false
DamageType = 0
OverrideControllable = false
Controllable = false
OverrideCreationModifier = false
TimeModifiers = Array[ExtResource("2_hpyh2")]([SubResource("Resource_xt3r4"), SubResource("Resource_wk3la")])
WaitForCompletion = true
metadata/_custom_type_script = "uid://bxiprx5nwmpnu"

View file

@ -0,0 +1,46 @@
[gd_resource type="Resource" script_class="ShootingPattern3D" load_steps=8 format=3 uid="uid://c0h5eo1lbsofd"]
[ext_resource type="Resource" uid="uid://ct86iyo1nbo30" path="res://Resources/Bullets/Boss/Rumia/Rumia_Green_Bullet_Small_3D.tres" id="1_1ov13"]
[ext_resource type="Script" uid="uid://b5s5mjuk1rng5" path="res://Scripts/Resources/TimeModifier.cs" id="2_m3ok6"]
[ext_resource type="Script" uid="uid://c6kkaq6j4thug" path="res://Scripts/Resources/Modifiers/DelayedPlayerFacingModifier.cs" id="3_ygi0w"]
[ext_resource type="Script" uid="uid://cq7pfooyqayc4" path="res://Scripts/Resources/Modifiers/DelayedSpeedModifier.cs" id="4_gk7f1"]
[ext_resource type="Script" uid="uid://bxiprx5nwmpnu" path="res://Scripts/AttackPatterns/ShootingPattern3D.cs" id="5_fu7ru"]
[sub_resource type="Resource" id="Resource_xt3r4"]
script = ExtResource("3_ygi0w")
TimeInSeconds = 0.5
ModifierType = 2
Value = 0.0
Continuous = false
[sub_resource type="Resource" id="Resource_wk3la"]
script = ExtResource("4_gk7f1")
TimeInSeconds = 0.8
ModifierType = 0
Value = 5.0
Continuous = false
[resource]
script = ExtResource("5_fu7ru")
BulletResource = ExtResource("1_1ov13")
EmitterOffset = Vector3(0, 0, 0)
bulletCount = 12
rotationSpeed = 0.0
_rotationOffset = 45.0
duration = 0.8
spread = 180.0
burstInterval = 1.0
ShotsPerBurst = 100
BurstRate = 0.0
_targetPlayer = true
_predictPlayer = true
OverrideOwner = false
Owner = 0
OverrideDamageType = false
DamageType = 0
OverrideControllable = false
Controllable = false
OverrideCreationModifier = false
TimeModifiers = Array[ExtResource("2_m3ok6")]([SubResource("Resource_xt3r4"), SubResource("Resource_wk3la")])
WaitForCompletion = true
metadata/_custom_type_script = "uid://bxiprx5nwmpnu"

View file

@ -180,23 +180,23 @@ public partial class ShootingPattern3D : AttackPattern
Vector2 direction = pattern.BulletResource.Direction;
// TODO: Fix player aiming for 3D
// if (pattern._targetPlayer && GameManager.Instance.PlayerPosition.HasValue)
// {
// if (pattern._predictPlayer && GameManager.Instance.PlayerVelocity.HasValue)
// {
// var predictedDirection = MathFunctions.PredictInterceptPosition(ScriptHost.ParentObject.GlobalPosition,
// GameManager.Instance.PlayerPosition.Value, GameManager.Instance.PlayerVelocity.Value,
// pattern.BulletResource.BulletSpeed);
// if (predictedDirection.HasValue)
// {
// direction = (predictedDirection.Value - ScriptHost.ParentObject.GlobalPosition).Normalized();
// }
// }
// else
// {
// direction = (GameManager.Instance.PlayerPosition.Value - ScriptHost.ParentObject.GlobalPosition).Normalized();
// }
// }
if (pattern._targetPlayer && GameController.Instance.PlayerPosition.HasValue)
{
if (pattern._predictPlayer && GameController.Instance.PlayerVelocity.HasValue)
{
var predictedDirection = MathFunctions.PredictInterceptPosition(ScriptHost.ParentObject.GlobalPosition.ToVector2(),
GameController.Instance.PlayerPosition.Value.ToVector2(), GameController.Instance.PlayerVelocity.Value.ToVector2(),
pattern.BulletResource.BulletSpeed);
if (predictedDirection.HasValue)
{
direction = (predictedDirection.Value - ScriptHost.ParentObject.GlobalPosition.ToVector2()).Normalized();
}
}
else
{
direction = (GameController.Instance.PlayerPosition.Value.ToVector2() - ScriptHost.ParentObject.GlobalPosition.ToVector2()).Normalized();
}
}
var spawnPosition = ScriptHost.ParentObject.GlobalPosition + pattern.EmitterOffset;

View file

@ -15,13 +15,13 @@ dest_files=["res://.godot/imported/rice_bullet_green_small.png-e55653f9d499946a3
[params]
compress/mode=0
compress/mode=3
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@ -31,4 +31,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0