diff --git a/Zennysoft.Game.Ma.Implementation/Components/IAttackComponent.cs b/Zennysoft.Game.Ma.Implementation/Components/IAttackComponent.cs index abda2db5c..f163505b2 100644 --- a/Zennysoft.Game.Ma.Implementation/Components/IAttackComponent.cs +++ b/Zennysoft.Game.Ma.Implementation/Components/IAttackComponent.cs @@ -15,4 +15,6 @@ public interface IAttackComponent : IEntityComponent public void SetAttack(int attack); public void RaiseMaximumAttack(int raiseAmount); + + public void LowerMaximumAttack(int lowerAmount); } diff --git a/Zennysoft.Game.Ma.Implementation/Components/IDefenseComponent.cs b/Zennysoft.Game.Ma.Implementation/Components/IDefenseComponent.cs index 46875a369..bc88a9c9a 100644 --- a/Zennysoft.Game.Ma.Implementation/Components/IDefenseComponent.cs +++ b/Zennysoft.Game.Ma.Implementation/Components/IDefenseComponent.cs @@ -15,4 +15,6 @@ public interface IDefenseComponent : IEntityComponent public void SetDefense(int attack); public void RaiseMaximumDefense(int raiseAmount); + + public void LowerMaximumDefense(int lowerAmount); } diff --git a/Zennysoft.Game.Ma.Implementation/Components/IEquipmentComponent.cs b/Zennysoft.Game.Ma.Implementation/Components/IEquipmentComponent.cs index dc6d8d9db..2d52dd946 100644 --- a/Zennysoft.Game.Ma.Implementation/Components/IEquipmentComponent.cs +++ b/Zennysoft.Game.Ma.Implementation/Components/IEquipmentComponent.cs @@ -1,5 +1,4 @@ using Chickensoft.Collections; -using Godot; using Zennysoft.Ma.Adapter.Entity; namespace Zennysoft.Ma.Adapter; diff --git a/Zennysoft.Game.Ma.Implementation/Components/VTComponent.cs b/Zennysoft.Game.Ma.Implementation/Components/VTComponent.cs index 615214b4a..a15e76e7b 100644 --- a/Zennysoft.Game.Ma.Implementation/Components/VTComponent.cs +++ b/Zennysoft.Game.Ma.Implementation/Components/VTComponent.cs @@ -18,5 +18,7 @@ public interface IVTComponent : IEntityComponent public void RaiseMaximumVT(int raiseAmount, bool restoreVT = true); + public void LowerMaximumVT(int lowerAmount); + public void SetMaximumVT(int vt); } diff --git a/Zennysoft.Game.Ma.Implementation/Equipment/Augment.cs b/Zennysoft.Game.Ma.Implementation/Equipment/Augment.cs index a9c5e7c62..4d4fe8845 100644 --- a/Zennysoft.Game.Ma.Implementation/Equipment/Augment.cs +++ b/Zennysoft.Game.Ma.Implementation/Equipment/Augment.cs @@ -1,4 +1,5 @@ using Zennysoft.Ma.Adapter; +using Zennysoft.Ma.Adapter.Entity; public class Augment { @@ -94,6 +95,33 @@ public class LowerEXPRateAugment : IAugmentType public void Remove() => _player.ExperiencePointsComponent.ModifyExpGainRate(_player.ExperiencePointsComponent.ExpGainRate.Value + 0.25f); } +public class BoostStatsAugment : IAugmentType +{ + private readonly IPlayer _player; + private readonly int _bonusLuck; + private readonly int _bonusHp; + private readonly int _bonusVt; + + public BoostStatsAugment(IPlayer player, int bonusLuck, int bonusHp, int bonusVt) + { + _player = player; + _bonusLuck = bonusLuck; + _bonusHp = bonusHp; + _bonusVt = bonusVt; + } + + public void Apply() + { + _player.HealthComponent.RaiseMaximumHP(_bonusHp); + _player.VTComponent.RaiseMaximumVT(_bonusVt); + _player.LuckComponent.IncreaseLuck(_bonusLuck); + } + + public void Remove() + { + } +} + public class LowerHPRecoveryAugment : IAugmentType { private readonly IPlayer _player; diff --git a/Zennysoft.Game.Ma/src/Components/AttackComponent.cs b/Zennysoft.Game.Ma/src/Components/AttackComponent.cs index 42cc4ed47..30657c06b 100644 --- a/Zennysoft.Game.Ma/src/Components/AttackComponent.cs +++ b/Zennysoft.Game.Ma/src/Components/AttackComponent.cs @@ -53,4 +53,11 @@ public class AttackComponent : IAttackComponent _maximumAttack.OnNext(_maximumAttack.Value + raiseAmount); Restore(raiseAmount); } + + public void LowerMaximumAttack(int lowerAmount) + { + _maximumAttack.OnNext(Mathf.Max(_maximumAttack.Value - lowerAmount, 1)); + if (_currentAttack.Value > _maximumAttack.Value) + _currentAttack.OnNext(_maximumAttack.Value); + } } diff --git a/Zennysoft.Game.Ma/src/Components/DefenseComponent.cs b/Zennysoft.Game.Ma/src/Components/DefenseComponent.cs index 7e3f1fe5d..dba98024c 100644 --- a/Zennysoft.Game.Ma/src/Components/DefenseComponent.cs +++ b/Zennysoft.Game.Ma/src/Components/DefenseComponent.cs @@ -53,4 +53,11 @@ public class DefenseComponent : IDefenseComponent _maximumDefense.OnNext(_maximumDefense.Value + raiseAmount); Restore(raiseAmount); } + + public void LowerMaximumDefense(int lowerAmount) + { + _maximumDefense.OnNext(Mathf.Max(_maximumDefense.Value - lowerAmount, 1)); + if (_currentDefense.Value > _maximumDefense.Value) + _currentDefense.OnNext(_maximumDefense.Value); + } } diff --git a/Zennysoft.Game.Ma/src/Components/VTComponent.cs b/Zennysoft.Game.Ma/src/Components/VTComponent.cs index 458306fd5..a564cba6c 100644 --- a/Zennysoft.Game.Ma/src/Components/VTComponent.cs +++ b/Zennysoft.Game.Ma/src/Components/VTComponent.cs @@ -1,4 +1,5 @@ using Chickensoft.Collections; +using Godot; using System; using Zennysoft.Ma.Adapter; @@ -56,6 +57,13 @@ public class VTComponent : IVTComponent Restore(raiseAmount); } + public void LowerMaximumVT(int lowerAmount) + { + _maximumVT.OnNext(Mathf.Max(_maximumVT.Value - lowerAmount, 1)); + if (_currentVT.Value > _maximumVT.Value) + _currentVT.OnNext(_maximumVT.Value); + } + public void SetMaximumVT(int vt) { _maximumVT.OnNext(vt); diff --git a/Zennysoft.Game.Ma/src/enemy/enemy_types/07. chinthe/Chinthe.tscn b/Zennysoft.Game.Ma/src/enemy/enemy_types/07. chinthe/Chinthe.tscn index 4a00db5b3..64bb361d2 100644 --- a/Zennysoft.Game.Ma/src/enemy/enemy_types/07. chinthe/Chinthe.tscn +++ b/Zennysoft.Game.Ma/src/enemy/enemy_types/07. chinthe/Chinthe.tscn @@ -2,7 +2,7 @@ [ext_resource type="Script" uid="uid://fwtjthix6awv" path="res://src/enemy/enemy_types/07. chinthe/Chinthe.cs" id="1_120m2"] [ext_resource type="Script" uid="uid://dlsgyx4i1jmp3" path="res://src/enemy/EnemyLoreInfo.cs" id="3_567xa"] -[ext_resource type="PackedScene" path="res://src/enemy/enemy_types/07. chinthe/ChintheModelView.tscn" id="3_ncr2e"] +[ext_resource type="PackedScene" uid="uid://de6e8yv6mv4fe" path="res://src/enemy/enemy_types/07. chinthe/ChintheModelView.tscn" id="3_ncr2e"] [ext_resource type="AudioStream" uid="uid://ba8xendacec6" path="res://src/audio/sfx/item_kyuu_layer_2.ogg" id="6_24q6i"] [ext_resource type="PackedScene" uid="uid://cve5oouhowtff" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="6_t7elt"] [ext_resource type="PackedScene" uid="uid://cmhem5xknjsvc" path="res://src/enemy/behaviors/EngagePlayerBehavior.tscn" id="7_24q6i"] @@ -48,12 +48,12 @@ script = ExtResource("1_120m2") [node name="CollisionShape" type="CollisionShape3D" parent="."] unique_name_in_owner = true -transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0) +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 1.46013, 0) shape = SubResource("CapsuleShape3D_cwfph") [node name="LineOfSight" type="Area3D" parent="."] unique_name_in_owner = true -transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0) +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 1.46013, 0) collision_layer = 0 collision_mask = 32 @@ -63,9 +63,11 @@ shape = SubResource("CylinderShape3D_jbgmx") [node name="EnemyModelView" parent="." instance=ExtResource("3_ncr2e")] unique_name_in_owner = true +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.46013, 0) EnemyLoreInfo = SubResource("Resource_120m2") [node name="Collision" type="Area3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.46013, 0) collision_layer = 2048 collision_mask = 0 @@ -74,6 +76,7 @@ shape = SubResource("SphereShape3D_8vcnq") [node name="PlayerDetector" type="Area3D" parent="."] unique_name_in_owner = true +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.46013, 0) collision_layer = 0 collision_mask = 34 @@ -81,6 +84,7 @@ collision_mask = 34 shape = SubResource("CylinderShape3D_q6h01") [node name="Components" type="Node3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.46013, 0) [node name="FollowBehavior" parent="Components" instance=ExtResource("6_t7elt")] unique_name_in_owner = true @@ -96,6 +100,7 @@ avoidance_enabled = true radius = 1.0 [node name="HitSounds" type="Node3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.46013, 0) [node name="AbsorbSFX" type="AudioStreamPlayer3D" parent="HitSounds"] unique_name_in_owner = true diff --git a/Zennysoft.Game.Ma/src/enemy/enemy_types/08a. Ambassador/Ambassador.tscn b/Zennysoft.Game.Ma/src/enemy/enemy_types/08a. Ambassador/Ambassador.tscn index 6d48b88f0..9c5f10f0d 100644 --- a/Zennysoft.Game.Ma/src/enemy/enemy_types/08a. Ambassador/Ambassador.tscn +++ b/Zennysoft.Game.Ma/src/enemy/enemy_types/08a. Ambassador/Ambassador.tscn @@ -36,10 +36,11 @@ script = ExtResource("1_m2guv") [node name="CollisionShape" type="CollisionShape3D" parent="."] unique_name_in_owner = true -transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0) +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 1.29778, 0) shape = SubResource("CapsuleShape3D_cwfph") [node name="Collision" type="Node3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.29778, 0) [node name="Collision" type="Area3D" parent="Collision"] collision_layer = 2048 @@ -65,12 +66,14 @@ target_position = Vector3(0, 0, -5) collision_mask = 3 [node name="Visual" type="Node3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.29778, 0) [node name="EnemyModelView" parent="Visual" instance=ExtResource("4_pjmem")] unique_name_in_owner = true [node name="PlayerDetector" type="Area3D" parent="."] unique_name_in_owner = true +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.29778, 0) collision_layer = 0 collision_mask = 34 @@ -78,6 +81,7 @@ collision_mask = 34 shape = SubResource("CylinderShape3D_sjoyv") [node name="Components" type="Node3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.29778, 0) [node name="PatrolBehavior" parent="Components" instance=ExtResource("4_hqy0f")] unique_name_in_owner = true @@ -96,6 +100,7 @@ avoidance_enabled = true radius = 1.0 [node name="HitSounds" type="Node3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.29778, 0) [node name="AbsorbSFX" type="AudioStreamPlayer3D" parent="HitSounds"] unique_name_in_owner = true diff --git a/Zennysoft.Game.Ma/src/enemy/enemy_types/08b. Ambassador (red)/AmbassadorRed.tscn b/Zennysoft.Game.Ma/src/enemy/enemy_types/08b. Ambassador (red)/AmbassadorRed.tscn index 9c05767ec..0489ee5d6 100644 --- a/Zennysoft.Game.Ma/src/enemy/enemy_types/08b. Ambassador (red)/AmbassadorRed.tscn +++ b/Zennysoft.Game.Ma/src/enemy/enemy_types/08b. Ambassador (red)/AmbassadorRed.tscn @@ -35,12 +35,12 @@ script = ExtResource("1_4nav4") [node name="CollisionShape" type="CollisionShape3D" parent="."] unique_name_in_owner = true -transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0) +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 1.69068, 0) shape = SubResource("CapsuleShape3D_cwfph") [node name="LineOfSight" type="Area3D" parent="."] unique_name_in_owner = true -transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0) +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 1.69068, 0) collision_layer = 2 collision_mask = 2 @@ -55,6 +55,7 @@ target_position = Vector3(0, 0, -5) collision_mask = 3 [node name="Collision" type="Node3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.69068, 0) [node name="Collision" type="Area3D" parent="Collision"] collision_layer = 2048 @@ -64,12 +65,14 @@ collision_mask = 0 shape = SubResource("SphereShape3D_8vcnq") [node name="Visual" type="Node3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.69068, 0) [node name="EnemyModelView" parent="Visual" instance=ExtResource("4_hqkeq")] unique_name_in_owner = true [node name="PlayerDetector" type="Area3D" parent="."] unique_name_in_owner = true +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.69068, 0) collision_layer = 0 collision_mask = 34 @@ -77,6 +80,7 @@ collision_mask = 34 shape = SubResource("CylinderShape3D_o0cbq") [node name="Components" type="Node3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.69068, 0) [node name="PatrolBehavior" parent="Components" instance=ExtResource("5_65xvc")] unique_name_in_owner = true @@ -95,6 +99,7 @@ avoidance_enabled = true radius = 1.0 [node name="HitSounds" type="Node3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.69068, 0) [node name="AbsorbSFX" type="AudioStreamPlayer3D" parent="HitSounds"] unique_name_in_owner = true diff --git a/Zennysoft.Game.Ma/src/enemy/enemy_types/08c. Ambassador (steel)/AmbassadorSteel.tscn b/Zennysoft.Game.Ma/src/enemy/enemy_types/08c. Ambassador (steel)/AmbassadorSteel.tscn index b5ccef283..21b59775a 100644 --- a/Zennysoft.Game.Ma/src/enemy/enemy_types/08c. Ambassador (steel)/AmbassadorSteel.tscn +++ b/Zennysoft.Game.Ma/src/enemy/enemy_types/08c. Ambassador (steel)/AmbassadorSteel.tscn @@ -35,12 +35,12 @@ script = ExtResource("1_ln0kc") [node name="CollisionShape" type="CollisionShape3D" parent="."] unique_name_in_owner = true -transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0) +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 1.32738, 0) shape = SubResource("CapsuleShape3D_cwfph") [node name="LineOfSight" type="Area3D" parent="."] unique_name_in_owner = true -transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0) +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 1.32738, 0) collision_layer = 2 collision_mask = 2 @@ -49,6 +49,7 @@ transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0, shape = SubResource("CylinderShape3D_jbgmx") [node name="Collision" type="Node3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.32738, 0) [node name="Collision" type="Area3D" parent="Collision"] collision_layer = 2048 @@ -63,12 +64,14 @@ target_position = Vector3(0, 0, -5) collision_mask = 3 [node name="Visual" type="Node3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.32738, 0) [node name="EnemyModelView" parent="Visual" instance=ExtResource("4_kdt1g")] unique_name_in_owner = true [node name="PlayerDetector" type="Area3D" parent="."] unique_name_in_owner = true +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.32738, 0) collision_layer = 0 collision_mask = 34 @@ -76,6 +79,7 @@ collision_mask = 34 shape = SubResource("CylinderShape3D_6o7lk") [node name="Components" type="Node3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.32738, 0) [node name="PatrolBehavior" parent="Components" instance=ExtResource("5_fmnae")] unique_name_in_owner = true @@ -94,6 +98,7 @@ avoidance_enabled = true radius = 1.0 [node name="HitSounds" type="Node3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.32738, 0) [node name="AbsorbSFX" type="AudioStreamPlayer3D" parent="HitSounds"] unique_name_in_owner = true diff --git a/Zennysoft.Game.Ma/src/enemy/enemy_types/09. Agni/AgniDemon.tscn b/Zennysoft.Game.Ma/src/enemy/enemy_types/09. Agni/AgniDemon.tscn index c2beed74c..f6e2e9dfe 100644 --- a/Zennysoft.Game.Ma/src/enemy/enemy_types/09. Agni/AgniDemon.tscn +++ b/Zennysoft.Game.Ma/src/enemy/enemy_types/09. Agni/AgniDemon.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=13 format=3 uid="uid://bmah360xutkud"] [ext_resource type="Script" uid="uid://h6duv685n6eh" path="res://src/enemy/enemy_types/09. Agni/AgniDemon.cs" id="1_e2477"] -[ext_resource type="PackedScene" path="res://src/enemy/enemy_types/09. Agni/AgniDemonModelView.tscn" id="3_tbkej"] +[ext_resource type="PackedScene" uid="uid://uynf2cg7wtqo" path="res://src/enemy/enemy_types/09. Agni/AgniDemonModelView.tscn" id="3_tbkej"] [ext_resource type="PackedScene" uid="uid://cn4fv2gv6raql" path="res://src/enemy/behaviors/PatrolBehavior.tscn" id="4_dxxe5"] [ext_resource type="PackedScene" uid="uid://cve5oouhowtff" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="5_j6ob5"] [ext_resource type="PackedScene" uid="uid://cmhem5xknjsvc" path="res://src/enemy/behaviors/EngagePlayerBehavior.tscn" id="6_58r4a"] diff --git a/Zennysoft.Game.Ma/src/enemy/enemy_types/11. Palan/Palan.tscn b/Zennysoft.Game.Ma/src/enemy/enemy_types/11. Palan/Palan.tscn index e65524624..00c2f5899 100644 --- a/Zennysoft.Game.Ma/src/enemy/enemy_types/11. Palan/Palan.tscn +++ b/Zennysoft.Game.Ma/src/enemy/enemy_types/11. Palan/Palan.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=14 format=3 uid="uid://co2s6jp20ku7x"] [ext_resource type="Script" uid="uid://cjd7k1scp1am8" path="res://src/enemy/enemy_types/11. Palan/Palan.cs" id="1_2upgt"] -[ext_resource type="PackedScene" path="res://src/enemy/enemy_types/11. Palan/PalanModelView.tscn" id="4_3ahu6"] +[ext_resource type="PackedScene" uid="uid://cuar5bbhxie4r" path="res://src/enemy/enemy_types/11. Palan/PalanModelView.tscn" id="4_3ahu6"] [ext_resource type="PackedScene" uid="uid://cn4fv2gv6raql" path="res://src/enemy/behaviors/PatrolBehavior.tscn" id="4_3ogbp"] [ext_resource type="PackedScene" uid="uid://cve5oouhowtff" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="5_6scof"] [ext_resource type="AudioStream" uid="uid://ba8xendacec6" path="res://src/audio/sfx/item_kyuu_layer_2.ogg" id="6_6scof"] @@ -34,12 +34,12 @@ script = ExtResource("1_2upgt") [node name="CollisionShape" type="CollisionShape3D" parent="."] unique_name_in_owner = true -transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0) +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 1.51919, 0) shape = SubResource("CapsuleShape3D_cwfph") [node name="LineOfSight" type="Area3D" parent="."] unique_name_in_owner = true -transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0) +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 1.51919, 0) collision_layer = 2 collision_mask = 2 @@ -54,6 +54,7 @@ target_position = Vector3(0, 0, -5) collision_mask = 3 [node name="Collision" type="Area3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.51919, 0) collision_layer = 2048 collision_mask = 0 @@ -62,9 +63,11 @@ shape = SubResource("SphereShape3D_8vcnq") [node name="EnemyModelView" parent="." instance=ExtResource("4_3ahu6")] unique_name_in_owner = true +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.51919, 0) [node name="PlayerDetector" type="Area3D" parent="."] unique_name_in_owner = true +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.51919, 0) collision_layer = 0 collision_mask = 34 @@ -72,6 +75,7 @@ collision_mask = 34 shape = SubResource("CylinderShape3D_c82i6") [node name="Components" type="Node3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.51919, 0) [node name="PatrolBehavior" parent="Components" instance=ExtResource("4_3ogbp")] unique_name_in_owner = true @@ -90,6 +94,7 @@ avoidance_enabled = true radius = 1.0 [node name="HitSounds" type="Node3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.51919, 0) [node name="AbsorbSFX" type="AudioStreamPlayer3D" parent="HitSounds"] unique_name_in_owner = true diff --git a/Zennysoft.Game.Ma/src/enemy/enemy_types/12. Shield of Heaven/ShieldOfHeaven.tscn b/Zennysoft.Game.Ma/src/enemy/enemy_types/12. Shield of Heaven/ShieldOfHeaven.tscn index 062e4e4f4..b7850ee1d 100644 --- a/Zennysoft.Game.Ma/src/enemy/enemy_types/12. Shield of Heaven/ShieldOfHeaven.tscn +++ b/Zennysoft.Game.Ma/src/enemy/enemy_types/12. Shield of Heaven/ShieldOfHeaven.tscn @@ -34,12 +34,12 @@ script = ExtResource("1_oxa5b") [node name="CollisionShape" type="CollisionShape3D" parent="."] unique_name_in_owner = true -transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0) +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 2.78421, 0) shape = SubResource("CapsuleShape3D_cwfph") [node name="LineOfSight" type="Area3D" parent="."] unique_name_in_owner = true -transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0) +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 2.78421, 0) collision_layer = 2 collision_mask = 2 @@ -55,6 +55,7 @@ collision_mask = 3 [node name="PlayerDetector" type="Area3D" parent="."] unique_name_in_owner = true +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.78421, 0) collision_layer = 0 collision_mask = 34 @@ -62,6 +63,7 @@ collision_mask = 34 shape = SubResource("CylinderShape3D_d5a6t") [node name="Collision" type="Area3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.78421, 0) collision_layer = 2048 collision_mask = 0 @@ -70,8 +72,10 @@ shape = SubResource("SphereShape3D_8vcnq") [node name="EnemyModelView" parent="." instance=ExtResource("3_r2swr")] unique_name_in_owner = true +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.78421, 0) [node name="Components" type="Node3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.78421, 0) [node name="PatrolBehavior" parent="Components" instance=ExtResource("4_jvpqg")] unique_name_in_owner = true @@ -90,6 +94,7 @@ avoidance_enabled = true radius = 1.0 [node name="HitSounds" type="Node3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.78421, 0) [node name="AbsorbSFX" type="AudioStreamPlayer3D" parent="HitSounds"] unique_name_in_owner = true @@ -115,7 +120,7 @@ unique_name_in_owner = true bus = &"SFX" [node name="Shadow" type="Sprite3D" parent="."] -transform = Transform3D(1.955, 0, 0, 0, -8.54558e-08, 1.955, 0, -1.955, -8.54558e-08, 0.00393164, -2.8107, 0.0077811) +transform = Transform3D(1.955, 0, 0, 0, -8.54558e-08, 1.955, 0, -1.955, -8.54558e-08, 0.00393164, -0.0264871, 0.0077811) transparency = 0.1 cast_shadow = 0 modulate = Color(1, 1, 1, 0.591) diff --git a/Zennysoft.Game.Ma/src/enemy/enemy_types/9b. Aqueos Demon/AqueosDemon.tscn b/Zennysoft.Game.Ma/src/enemy/enemy_types/9b. Aqueos Demon/AqueosDemon.tscn index be99434cf..21f9cc54a 100644 --- a/Zennysoft.Game.Ma/src/enemy/enemy_types/9b. Aqueos Demon/AqueosDemon.tscn +++ b/Zennysoft.Game.Ma/src/enemy/enemy_types/9b. Aqueos Demon/AqueosDemon.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=13 format=3 uid="uid://dj48hv1pnwlrj"] [ext_resource type="Script" uid="uid://ccakkuoppaidy" path="res://src/enemy/enemy_types/9b. Aqueos Demon/AqueousDemon.cs" id="1_8b86o"] -[ext_resource type="PackedScene" path="res://src/enemy/enemy_types/9b. Aqueos Demon/AqueosModelView.tscn" id="2_0hbxv"] +[ext_resource type="PackedScene" uid="uid://omkas04o46rq" path="res://src/enemy/enemy_types/9b. Aqueos Demon/AqueosModelView.tscn" id="2_0hbxv"] [ext_resource type="PackedScene" uid="uid://cn4fv2gv6raql" path="res://src/enemy/behaviors/PatrolBehavior.tscn" id="4_5pbfd"] [ext_resource type="PackedScene" uid="uid://cve5oouhowtff" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="5_ha827"] [ext_resource type="PackedScene" uid="uid://cmhem5xknjsvc" path="res://src/enemy/behaviors/EngagePlayerBehavior.tscn" id="6_7afhy"] @@ -33,12 +33,12 @@ script = ExtResource("1_8b86o") [node name="CollisionShape" type="CollisionShape3D" parent="."] unique_name_in_owner = true -transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0) +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 1.64877, 0) shape = SubResource("CapsuleShape3D_cwfph") [node name="LineOfSight" type="Area3D" parent="."] unique_name_in_owner = true -transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0) +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 1.64877, 0) collision_layer = 2 collision_mask = 2 @@ -53,6 +53,7 @@ target_position = Vector3(0, 0, -5) collision_mask = 3 [node name="Collision" type="Area3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.64877, 0) collision_layer = 2048 collision_mask = 0 @@ -61,9 +62,11 @@ shape = SubResource("SphereShape3D_8vcnq") [node name="EnemyModelView" parent="." instance=ExtResource("2_0hbxv")] unique_name_in_owner = true +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.64877, 0) [node name="PlayerDetector" type="Area3D" parent="."] unique_name_in_owner = true +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.64877, 0) collision_layer = 0 collision_mask = 34 @@ -71,6 +74,7 @@ collision_mask = 34 shape = SubResource("CylinderShape3D_gxowl") [node name="Components" type="Node3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.64877, 0) [node name="PatrolBehavior" parent="Components" instance=ExtResource("4_5pbfd")] unique_name_in_owner = true @@ -89,6 +93,7 @@ avoidance_enabled = true radius = 1.0 [node name="HitSounds" type="Node3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.64877, 0) [node name="AbsorbSFX" type="AudioStreamPlayer3D" parent="HitSounds"] unique_name_in_owner = true diff --git a/Zennysoft.Game.Ma/src/game/Game.tscn b/Zennysoft.Game.Ma/src/game/Game.tscn index fcd52b7bf..b5609ae8e 100644 --- a/Zennysoft.Game.Ma/src/game/Game.tscn +++ b/Zennysoft.Game.Ma/src/game/Game.tscn @@ -11,7 +11,7 @@ process_mode = 3 script = ExtResource("1_ytcii") [node name="SubViewportContainer" type="SubViewportContainer" parent="."] -custom_minimum_size = Vector2(1456, 1080) +custom_minimum_size = Vector2(1461, 1080) anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 @@ -23,7 +23,7 @@ stretch = true [node name="SubViewport" type="SubViewport" parent="SubViewportContainer"] handle_input_locally = false audio_listener_enable_3d = true -size = Vector2i(1456, 1080) +size = Vector2i(1461, 1080) render_target_update_mode = 4 [node name="PauseContainer" type="Node3D" parent="SubViewportContainer/SubViewport"] diff --git a/Zennysoft.Game.Ma/src/map/dungeon/floors/Special Floors/00. Altar.tscn b/Zennysoft.Game.Ma/src/map/dungeon/floors/Special Floors/00. Altar.tscn index 1fa6342d4..fbd20a59e 100644 --- a/Zennysoft.Game.Ma/src/map/dungeon/floors/Special Floors/00. Altar.tscn +++ b/Zennysoft.Game.Ma/src/map/dungeon/floors/Special Floors/00. Altar.tscn @@ -107,7 +107,6 @@ transform = Transform3D(1.6, 0, 0, 0, 1.6, 0, 0, 0, 1.6, 0, 4.91245, 0) [node name="Collision" type="Node3D" parent="."] transform = Transform3D(1.6, 0, 0, 0, 1.6, 0, 0, 0, 1.6, 0, 4.91245, 0) -visible = false [node name="StaticBody3D" type="StaticBody3D" parent="Collision"] transform = Transform3D(0.881211, 0, 0, 0, 0.881211, 0, 0, 0, 0.881211, -20.6816, -2.62104, -11.5685) @@ -145,6 +144,7 @@ transform = Transform3D(0.857993, 0, 0.513661, 0, 1, 0, -0.513661, 0, 0.857993, shape = SubResource("BoxShape3D_xh2ej") [node name="Ground" type="StaticBody3D" parent="Collision"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.246962, 0) collision_layer = 5 collision_mask = 0 diff --git a/Zennysoft.Game.Ma/src/player/Player.cs b/Zennysoft.Game.Ma/src/player/Player.cs index 1c7599ea5..c5bef8d73 100644 --- a/Zennysoft.Game.Ma/src/player/Player.cs +++ b/Zennysoft.Game.Ma/src/player/Player.cs @@ -102,7 +102,7 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide #endregion [Export] - public int HealthTimerHPRate { get; set; } = 2; + public int HealthTimerHPRate { get; set; } = 1; [Export] public bool AutoIdentifyItems { get; set; } = false; @@ -435,6 +435,7 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide weapon.Augment = new Augment(JewelTags.IncreaseLuck, new BasicAugment()); break; } + EquipmentComponent.UpdateEquipment(weapon); } private void ApplyNewAugment(Armor armor, JewelTags tag) @@ -491,6 +492,7 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide armor.Augment = new Augment(JewelTags.IncreaseLuck, new BasicAugment()); break; } + EquipmentComponent.UpdateEquipment(armor); } private void ApplyNewAugment(Accessory accessory, JewelTags tag) @@ -547,6 +549,7 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide accessory.Augment = new Augment(JewelTags.IncreaseLuck, new BasicAugment()); break; } + EquipmentComponent.UpdateEquipment(accessory); } private static Vector3 GlobalInputVector diff --git a/Zennysoft.Game.Ma/src/ui/inventory_menu/AugmentableItemsMenu.cs b/Zennysoft.Game.Ma/src/ui/inventory_menu/AugmentableItemsMenu.cs index da4e35274..3c83e53ad 100644 --- a/Zennysoft.Game.Ma/src/ui/inventory_menu/AugmentableItemsMenu.cs +++ b/Zennysoft.Game.Ma/src/ui/inventory_menu/AugmentableItemsMenu.cs @@ -66,7 +66,7 @@ public partial class AugmentableItemsMenu : Control { _augmentingItem = augmentingItem; - var inventory = _player.Inventory.Items.OfType(); + var inventory = _player.Inventory.Items; var validSelectableItems = inventory.Except(inventory.OfType().Where(x => x.Glued)).ToList(); ItemSlots.ForEach(x => x.SetEmpty()); var slotIndex = 0; @@ -78,9 +78,8 @@ public partial class AugmentableItemsMenu : Control } Show(); - var itemToFocus = ItemSlots.FirstOrDefault(x => x.Item.Value == validSelectableItems.FirstOrDefault()); - if (itemToFocus != null) - itemToFocus.FocusItem(); + if (ItemSlots.FirstOrDefault() != null) + ItemSlots.First().FocusItem(); } public override void _Input(InputEvent @event) diff --git a/Zennysoft.Game.Ma/src/ui/inventory_menu/InventoryMenu.cs b/Zennysoft.Game.Ma/src/ui/inventory_menu/InventoryMenu.cs index 2ba904b72..3337aab13 100644 --- a/Zennysoft.Game.Ma/src/ui/inventory_menu/InventoryMenu.cs +++ b/Zennysoft.Game.Ma/src/ui/inventory_menu/InventoryMenu.cs @@ -37,15 +37,12 @@ public partial class InventoryMenu : Control, IInventoryMenu [Node] public Label StatusLabel { get; set; } - private Dictionary ItemSlotWithItem; - private List ItemSlots; private IItemSlot _currentlySelected; public void OnResolved() { - ItemSlotWithItem = []; ItemSlots = [.. Inventory.GetChildren().OfType()]; ItemSlots.ForEach(x => x.ItemPressed += ItemPressed); ItemSlots.ForEach(x => x.ItemSelected += ItemSelected); diff --git a/Zennysoft.Game.Ma/src/ui/pause_menu/PauseDebugMenu.cs b/Zennysoft.Game.Ma/src/ui/pause_menu/PauseDebugMenu.cs index afe9be781..fd5ad0e5a 100644 --- a/Zennysoft.Game.Ma/src/ui/pause_menu/PauseDebugMenu.cs +++ b/Zennysoft.Game.Ma/src/ui/pause_menu/PauseDebugMenu.cs @@ -61,7 +61,7 @@ public partial class PauseDebugMenu : Control, IDebugMenu _enemyFilePath + "/09. Agni/AgniDemon.tscn", _enemyFilePath + "/9b. Aqueos Demon/AqueosDemon.tscn", _enemyFilePath + "/11. Palan/Palan.tscn", - _enemyFilePath + "/12. Shield of Heaven/ShieldModelView.tscn", + _enemyFilePath + "/12. Shield of Heaven/ShieldOfHeaven.tscn", _enemyFilePath + "/13. gold sproingy/GoldSproingy.tscn" ]; @@ -105,7 +105,7 @@ public partial class PauseDebugMenu : Control, IDebugMenu var enemyToSpawn = _spawnableEnemies.ElementAt((int)index); var loadedEnemy = GD.Load(enemyToSpawn).Instantiate(); _game.AddChild(loadedEnemy); - loadedEnemy.GlobalPosition = new Vector3(_player.GlobalPosition.X, _player.GlobalPosition.Y + 1, _player.GlobalPosition.Z) + (-_player.GlobalBasis.Z * 2); + loadedEnemy.GlobalPosition = new Vector3(_player.GlobalPosition.X, 0, _player.GlobalPosition.Z) + (-_player.GlobalBasis.Z * 2); } private void SpawnItemDropDown_ItemSelected(long index)