Boss fixes, various changes
This commit is contained in:
@@ -265,7 +265,7 @@ EnemyViewerWalk={
|
|||||||
|
|
||||||
[internationalization]
|
[internationalization]
|
||||||
|
|
||||||
locale/translations_pot_files=PackedStringArray("res://src/dialog/Dialogue.dialogue", "res://src/npc/Ran/ran.dialogue", "res://src/npc/Rat/ratdialogue.dialogue", "res://src/dialog/Altar.dialogue")
|
locale/translations_pot_files=PackedStringArray("res://src/dialog/Dialogue.dialogue", "res://src/npc/Ran/ran.dialogue", "res://src/npc/Rat/ratdialogue.dialogue", "res://src/dialog/Altar.dialogue", "res://stone.dialogue")
|
||||||
|
|
||||||
[layer_names]
|
[layer_names]
|
||||||
|
|
||||||
|
|||||||
@@ -110,8 +110,6 @@ public partial class BossTypeA : Enemy, IHaveEngagePlayerBehavior, IHaveFollowBe
|
|||||||
EnemyHitbox.SetDeferred(CollisionShape3D.PropertyName.Disabled, false);
|
EnemyHitbox.SetDeferred(CollisionShape3D.PropertyName.Disabled, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Die() => QueueFree();
|
|
||||||
|
|
||||||
public void RotateToPlayer(float rotationAngle)
|
public void RotateToPlayer(float rotationAngle)
|
||||||
{
|
{
|
||||||
var tweener = GetTree().CreateTween();
|
var tweener = GetTree().CreateTween();
|
||||||
|
|||||||
@@ -13,12 +13,40 @@ public partial class EnemyModelView3D : EnemyModelView
|
|||||||
|
|
||||||
[Node] public MeshInstance3D MeshInstance { get; set; } = default!;
|
[Node] public MeshInstance3D MeshInstance { get; set; } = default!;
|
||||||
|
|
||||||
|
[Node] public AnimationPlayer DeathAnimation { get; set; } = default!;
|
||||||
|
|
||||||
|
[Node] public Node3D Armature { get; set; } = default!;
|
||||||
|
|
||||||
|
[Node] public Node3D ExplodingModel { get; set; } = default!;
|
||||||
|
|
||||||
|
public void OnReady()
|
||||||
|
{
|
||||||
|
DeathAnimation.AnimationFinished += DeathAnimation_AnimationFinished;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DeathAnimation_AnimationFinished(StringName animName)
|
||||||
|
{
|
||||||
|
QueueFree();
|
||||||
|
}
|
||||||
|
|
||||||
public override Vector2 GetSize()
|
public override Vector2 GetSize()
|
||||||
{
|
{
|
||||||
var aabb = MeshInstance.GetAabb();
|
var aabb = MeshInstance.GetAabb();
|
||||||
return new Vector2(aabb.Size.X, aabb.Position.Abs().Y);
|
return new Vector2(aabb.Size.X, aabb.Position.Abs().Y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void PlayHitAnimation()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void PlayDeathAnimation()
|
||||||
|
{
|
||||||
|
Armature.Hide();
|
||||||
|
ExplodingModel.Show();
|
||||||
|
DeathAnimation.Play("Animation");
|
||||||
|
}
|
||||||
|
|
||||||
private void ChangeMaterial()
|
private void ChangeMaterial()
|
||||||
{
|
{
|
||||||
var material = new StandardMaterial3D
|
var material = new StandardMaterial3D
|
||||||
|
|||||||
@@ -42,10 +42,11 @@ script = ExtResource("1_xsluo")
|
|||||||
|
|
||||||
[node name="CollisionShape" type="CollisionShape3D" parent="."]
|
[node name="CollisionShape" type="CollisionShape3D" parent="."]
|
||||||
unique_name_in_owner = true
|
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.18615, 0)
|
||||||
shape = SubResource("CapsuleShape3D_cwfph")
|
shape = SubResource("CapsuleShape3D_cwfph")
|
||||||
|
|
||||||
[node name="Collision" type="Node3D" parent="."]
|
[node name="Collision" type="Node3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.18615, 0)
|
||||||
|
|
||||||
[node name="Collision" type="Area3D" parent="Collision"]
|
[node name="Collision" type="Area3D" parent="Collision"]
|
||||||
collision_layer = 2048
|
collision_layer = 2048
|
||||||
@@ -83,11 +84,13 @@ collision_mask = 34
|
|||||||
shape = SubResource("CylinderShape3D_drfkj")
|
shape = SubResource("CylinderShape3D_drfkj")
|
||||||
|
|
||||||
[node name="Visual" type="Node3D" parent="."]
|
[node name="Visual" type="Node3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.1, 0)
|
||||||
|
|
||||||
[node name="EnemyModelView" parent="Visual" instance=ExtResource("4_o3b7p")]
|
[node name="EnemyModelView" parent="Visual" instance=ExtResource("4_o3b7p")]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
|
|
||||||
[node name="Components" type="Node3D" parent="."]
|
[node name="Components" type="Node3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.18615, 0)
|
||||||
|
|
||||||
[node name="PatrolBehavior" parent="Components" instance=ExtResource("4_drfkj")]
|
[node name="PatrolBehavior" parent="Components" instance=ExtResource("4_drfkj")]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
@@ -108,6 +111,7 @@ avoidance_enabled = true
|
|||||||
radius = 1.0
|
radius = 1.0
|
||||||
|
|
||||||
[node name="SFX" type="Node3D" parent="."]
|
[node name="SFX" type="Node3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.18615, 0)
|
||||||
|
|
||||||
[node name="AbsorbSFX" type="AudioStreamPlayer3D" parent="SFX"]
|
[node name="AbsorbSFX" type="AudioStreamPlayer3D" parent="SFX"]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
|
|||||||
@@ -666,7 +666,7 @@ EnemyLoreInfo = SubResource("Resource_ivy74")
|
|||||||
|
|
||||||
[node name="Sprite3D" type="Sprite3D" parent="."]
|
[node name="Sprite3D" type="Sprite3D" parent="."]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
transform = Transform3D(6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0)
|
transform = Transform3D(6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 1.1044, 0)
|
||||||
pixel_size = 0.001
|
pixel_size = 0.001
|
||||||
billboard = 2
|
billboard = 2
|
||||||
shaded = true
|
shaded = true
|
||||||
@@ -697,7 +697,7 @@ animation = &"idle_left_walk"
|
|||||||
|
|
||||||
[node name="Hitbox" type="Area3D" parent="."]
|
[node name="Hitbox" type="Area3D" parent="."]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -0.152949, 0, 0)
|
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -0.152949, 1.1044, 0)
|
||||||
collision_layer = 64
|
collision_layer = 64
|
||||||
collision_mask = 64
|
collision_mask = 64
|
||||||
|
|
||||||
@@ -722,11 +722,12 @@ anim_player = NodePath("../AnimationPlayer")
|
|||||||
|
|
||||||
[node name="WalkSFX" type="AudioStreamPlayer3D" parent="."]
|
[node name="WalkSFX" type="AudioStreamPlayer3D" parent="."]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.1044, 0)
|
||||||
autoplay = true
|
autoplay = true
|
||||||
bus = &"SFX"
|
bus = &"SFX"
|
||||||
|
|
||||||
[node name="Shadow" type="Sprite3D" parent="."]
|
[node name="Shadow" type="Sprite3D" parent="."]
|
||||||
transform = Transform3D(0.115, 0, 0, 0, -5.02681e-09, 0.115, 0, -0.115, -5.02681e-09, -0.00018537, -1.10125, 0.0453106)
|
transform = Transform3D(0.115, 0, 0, 0, -5.02681e-09, 0.115, 0, -0.115, -5.02681e-09, -0.00018537, 0.00315392, 0.0453106)
|
||||||
transparency = 0.1
|
transparency = 0.1
|
||||||
cast_shadow = 0
|
cast_shadow = 0
|
||||||
texture_filter = 0
|
texture_filter = 0
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ script = ExtResource("1_lb5oy")
|
|||||||
|
|
||||||
[node name="LineOfSight" type="Area3D" parent="."]
|
[node name="LineOfSight" type="Area3D" parent="."]
|
||||||
unique_name_in_owner = true
|
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.27161, 0)
|
||||||
collision_layer = 2
|
collision_layer = 2
|
||||||
collision_mask = 2
|
collision_mask = 2
|
||||||
|
|
||||||
@@ -45,21 +45,22 @@ shape = SubResource("CylinderShape3D_jbgmx")
|
|||||||
|
|
||||||
[node name="Raycast" type="RayCast3D" parent="."]
|
[node name="Raycast" type="RayCast3D" parent="."]
|
||||||
unique_name_in_owner = true
|
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.27161, 0)
|
||||||
target_position = Vector3(0, 0, -5)
|
target_position = Vector3(0, 0, -5)
|
||||||
collision_mask = 3
|
collision_mask = 3
|
||||||
|
|
||||||
[node name="CollisionShape" type="CollisionShape3D" parent="."]
|
[node name="CollisionShape" type="CollisionShape3D" parent="."]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -0.0824751, 0.212459, 0)
|
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -0.0824751, 2.48407, 0)
|
||||||
shape = SubResource("CapsuleShape3D_0h5s2")
|
shape = SubResource("CapsuleShape3D_0h5s2")
|
||||||
|
|
||||||
[node name="EnemyModelView" parent="." instance=ExtResource("3_wrps7")]
|
[node name="EnemyModelView" parent="." instance=ExtResource("3_wrps7")]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0799522, 0, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0799522, 1.36029, 0)
|
||||||
|
|
||||||
[node name="PlayerDetector" type="Area3D" parent="."]
|
[node name="PlayerDetector" type="Area3D" parent="."]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.27161, 0)
|
||||||
collision_layer = 0
|
collision_layer = 0
|
||||||
collision_mask = 34
|
collision_mask = 34
|
||||||
|
|
||||||
@@ -67,6 +68,7 @@ collision_mask = 34
|
|||||||
shape = SubResource("CylinderShape3D_eek1b")
|
shape = SubResource("CylinderShape3D_eek1b")
|
||||||
|
|
||||||
[node name="Collision" type="Area3D" parent="."]
|
[node name="Collision" type="Area3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.27161, 0)
|
||||||
collision_layer = 2048
|
collision_layer = 2048
|
||||||
collision_mask = 0
|
collision_mask = 0
|
||||||
|
|
||||||
@@ -75,6 +77,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.120117, 0.221246, 0)
|
|||||||
shape = SubResource("SphereShape3D_wrps7")
|
shape = SubResource("SphereShape3D_wrps7")
|
||||||
|
|
||||||
[node name="Components" type="Node3D" parent="."]
|
[node name="Components" type="Node3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.27161, 0)
|
||||||
|
|
||||||
[node name="PatrolBehavior" parent="Components" instance=ExtResource("5_fkx5j")]
|
[node name="PatrolBehavior" parent="Components" instance=ExtResource("5_fkx5j")]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
@@ -93,6 +96,7 @@ avoidance_enabled = true
|
|||||||
radius = 1.0
|
radius = 1.0
|
||||||
|
|
||||||
[node name="HitSounds" type="Node3D" parent="."]
|
[node name="HitSounds" type="Node3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.27161, 0)
|
||||||
|
|
||||||
[node name="AbsorbSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
|
[node name="AbsorbSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
|
|||||||
@@ -1187,7 +1187,7 @@ EnemyLoreInfo = SubResource("Resource_gby04")
|
|||||||
|
|
||||||
[node name="Sprite3D" type="Sprite3D" parent="."]
|
[node name="Sprite3D" type="Sprite3D" parent="."]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.086869, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.25389, 0)
|
||||||
billboard = 2
|
billboard = 2
|
||||||
shaded = true
|
shaded = true
|
||||||
alpha_cut = 1
|
alpha_cut = 1
|
||||||
@@ -1218,7 +1218,7 @@ offset = Vector2(400, 400)
|
|||||||
|
|
||||||
[node name="Hitbox" type="Area3D" parent="."]
|
[node name="Hitbox" type="Area3D" parent="."]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -0.152949, 0, 0)
|
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -0.152949, 1.34076, 0)
|
||||||
collision_layer = 64
|
collision_layer = 64
|
||||||
collision_mask = 64
|
collision_mask = 64
|
||||||
|
|
||||||
@@ -1245,18 +1245,19 @@ libraries = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
[node name="Michael Attack VFX" type="AnimatedSprite3D" parent="."]
|
[node name="Michael Attack VFX" type="AnimatedSprite3D" parent="."]
|
||||||
transform = Transform3D(0.72, 0, 0, 0, 0.72, 0, 0, 0, 0.72, -0.129818, 0.274447, 0.532815)
|
transform = Transform3D(0.72, 0, 0, 0, 0.72, 0, 0, 0, 0.72, -0.129818, 1.61521, 0.532815)
|
||||||
modulate = Color(0.977, 0.31, 1, 0.741176)
|
modulate = Color(0.977, 0.31, 1, 0.741176)
|
||||||
billboard = 2
|
billboard = 2
|
||||||
sprite_frames = SubResource("SpriteFrames_suy1t")
|
sprite_frames = SubResource("SpriteFrames_suy1t")
|
||||||
|
|
||||||
[node name="WalkSFX" type="AudioStreamPlayer3D" parent="."]
|
[node name="WalkSFX" type="AudioStreamPlayer3D" parent="."]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.34076, 0)
|
||||||
autoplay = true
|
autoplay = true
|
||||||
bus = &"SFX"
|
bus = &"SFX"
|
||||||
|
|
||||||
[node name="Shadow" type="Sprite3D" parent="."]
|
[node name="Shadow" type="Sprite3D" parent="."]
|
||||||
transform = Transform3D(0.38, 0, 0, 0, -1.66103e-08, 0.38, 0, -0.38, -1.66103e-08, 0.00393164, -1.31885, 0.0077811)
|
transform = Transform3D(0.38, 0, 0, 0, -1.66103e-08, 0.38, 0, -0.38, -1.66103e-08, 0.00393164, 0.0219133, 0.0077811)
|
||||||
transparency = 0.1
|
transparency = 0.1
|
||||||
cast_shadow = 0
|
cast_shadow = 0
|
||||||
modulate = Color(1, 1, 1, 0.591)
|
modulate = Color(1, 1, 1, 0.591)
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -34,73 +34,74 @@ public partial class Map : Node3D, IMap
|
|||||||
|
|
||||||
public void OnResolved()
|
public void OnResolved()
|
||||||
{
|
{
|
||||||
this.Provide();
|
this.Provide();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void InitializeMapData()
|
public void InitializeMapData()
|
||||||
{
|
{
|
||||||
CurrentFloorNumber.OnNext(-1);
|
CurrentFloorNumber.OnNext(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
public IDungeonRoom GetPlayersCurrentRoom()
|
public IDungeonRoom GetPlayersCurrentRoom()
|
||||||
{
|
{
|
||||||
var rooms = CurrentFloor.Rooms;
|
var rooms = CurrentFloor.Rooms;
|
||||||
var playersRoom = rooms.SingleOrDefault(x => x.IsPlayerInRoom);
|
var playersRoom = rooms.SingleOrDefault(x => x.IsPlayerInRoom);
|
||||||
return playersRoom;
|
return playersRoom;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Transform3D GetPlayerSpawnPosition() => CurrentFloor.GetPlayerSpawnPoint();
|
public Transform3D GetPlayerSpawnPosition() => CurrentFloor.GetPlayerSpawnPoint();
|
||||||
|
|
||||||
public async Task LoadFloor()
|
public async Task LoadFloor()
|
||||||
{
|
{
|
||||||
var floor = MapOrder.GetChildren().OfType<FloorNode>().ElementAt(CurrentFloorNumber.Value + 1);
|
var floor = MapOrder.GetChildren().OfType<FloorNode>().ElementAt(CurrentFloorNumber.Value + 1);
|
||||||
var sceneToLoad = LayoutToScenePathConverter.Convert(floor);
|
var sceneToLoad = LayoutToScenePathConverter.Convert(floor);
|
||||||
await LoadFloor(sceneToLoad);
|
await LoadFloor(sceneToLoad);
|
||||||
if (CurrentFloor is DungeonFloor dungeonFloor && floor is DungeonFloorNode dungeonFloorNode)
|
|
||||||
dungeonFloor.SpawnEnemies(dungeonFloorNode);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task LoadFloor(string sceneName)
|
public async Task LoadFloor(string sceneName)
|
||||||
{
|
{
|
||||||
AnimationPlayer.CallDeferred(AnimationPlayer.MethodName.Play, "fade_out");
|
AnimationPlayer.CallDeferred(AnimationPlayer.MethodName.Play, "fade_out");
|
||||||
ClearMap();
|
ClearMap();
|
||||||
var newFloor = await LoadNewFloor(sceneName);
|
var newFloor = await LoadNewFloor(sceneName);
|
||||||
AddChild(newFloor);
|
AddChild(newFloor);
|
||||||
InitializeFloor(newFloor);
|
InitializeFloor(newFloor);
|
||||||
AnimationPlayer.CallDeferred(AnimationPlayer.MethodName.Play, ("fade_in"));
|
var floor = MapOrder.GetChildren().OfType<FloorNode>().ElementAt(CurrentFloorNumber.Value + 1);
|
||||||
|
if (CurrentFloor is DungeonFloor dungeonFloor && floor is DungeonFloorNode dungeonFloorNode)
|
||||||
|
dungeonFloor.SpawnEnemies(dungeonFloorNode);
|
||||||
|
AnimationPlayer.CallDeferred(AnimationPlayer.MethodName.Play, ("fade_in"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ClearMap()
|
public void ClearMap()
|
||||||
{
|
{
|
||||||
AnimationPlayer.CallDeferred(AnimationPlayer.MethodName.Play, "fade_out");
|
AnimationPlayer.CallDeferred(AnimationPlayer.MethodName.Play, "fade_out");
|
||||||
CurrentFloor?.CallDeferred(MethodName.QueueFree, []);
|
CurrentFloor?.CallDeferred(MethodName.QueueFree, []);
|
||||||
SpawnPointCreated?.Invoke(new Transform3D(Basis.Identity, new Vector3(-999, -999, -999)));
|
SpawnPointCreated?.Invoke(new Transform3D(Basis.Identity, new Vector3(-999, -999, -999)));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void InitializeFloor(Node newFloor)
|
private void InitializeFloor(Node newFloor)
|
||||||
{
|
{
|
||||||
CurrentFloor = (IDungeonFloor)newFloor;
|
CurrentFloor = (IDungeonFloor)newFloor;
|
||||||
SetupDungeonFloor();
|
SetupDungeonFloor();
|
||||||
CurrentFloor.FloorIsLoaded = true;
|
CurrentFloor.FloorIsLoaded = true;
|
||||||
CurrentFloorNumber.OnNext(CurrentFloorNumber.Value + 1);
|
CurrentFloorNumber.OnNext(CurrentFloorNumber.Value + 1);
|
||||||
FloorLoaded?.Invoke();
|
FloorLoaded?.Invoke();
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<Node> LoadNewFloor(string sceneName)
|
private async Task<Node> LoadNewFloor(string sceneName)
|
||||||
{
|
{
|
||||||
var sceneLoader = new SceneLoader();
|
var sceneLoader = new SceneLoader();
|
||||||
AddChild(sceneLoader);
|
AddChild(sceneLoader);
|
||||||
sceneLoader.LoadSceneRequest(sceneName);
|
sceneLoader.LoadSceneRequest(sceneName);
|
||||||
await ToSignal(sceneLoader, SceneLoader.SignalName.SceneLoaded);
|
await ToSignal(sceneLoader, SceneLoader.SignalName.SceneLoaded);
|
||||||
var result = sceneLoader.LoadedScene;
|
var result = sceneLoader.LoadedScene;
|
||||||
sceneLoader.QueueFree();
|
sceneLoader.QueueFree();
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SetupDungeonFloor()
|
private void SetupDungeonFloor()
|
||||||
{
|
{
|
||||||
CurrentFloor.InitializeDungeon();
|
CurrentFloor.InitializeDungeon();
|
||||||
var transform = GetPlayerSpawnPosition();
|
var transform = GetPlayerSpawnPosition();
|
||||||
SpawnPointCreated?.Invoke(transform);
|
SpawnPointCreated?.Invoke(transform);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -76,6 +76,16 @@ libraries = {
|
|||||||
[node name="MapOrder" type="Node" parent="."]
|
[node name="MapOrder" type="Node" parent="."]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
|
|
||||||
|
[node name="Boss Floor 1" type="Node" parent="MapOrder"]
|
||||||
|
script = ExtResource("3_v14r0")
|
||||||
|
FloorName = 2
|
||||||
|
|
||||||
|
[node name="Floor01" type="Node" parent="MapOrder"]
|
||||||
|
script = ExtResource("2_00xd7")
|
||||||
|
FolderName = "Floor01"
|
||||||
|
FloorOdds = Array[float]([0.33, 0.33, 0.33])
|
||||||
|
Michael = 1.0
|
||||||
|
|
||||||
[node name="Overworld" type="Node" parent="MapOrder"]
|
[node name="Overworld" type="Node" parent="MapOrder"]
|
||||||
script = ExtResource("3_v14r0")
|
script = ExtResource("3_v14r0")
|
||||||
|
|
||||||
@@ -83,12 +93,6 @@ script = ExtResource("3_v14r0")
|
|||||||
script = ExtResource("3_v14r0")
|
script = ExtResource("3_v14r0")
|
||||||
FloorName = 1
|
FloorName = 1
|
||||||
|
|
||||||
[node name="Floor01" type="Node" parent="MapOrder"]
|
|
||||||
script = ExtResource("2_00xd7")
|
|
||||||
FolderName = "Floor01"
|
|
||||||
FloorOdds = Array[float]([0.33, 0.33, 0.33])
|
|
||||||
Sproingy = 1.0
|
|
||||||
|
|
||||||
[node name="Floor02" type="Node" parent="MapOrder"]
|
[node name="Floor02" type="Node" parent="MapOrder"]
|
||||||
script = ExtResource("2_00xd7")
|
script = ExtResource("2_00xd7")
|
||||||
FolderName = "Floor02"
|
FolderName = "Floor02"
|
||||||
@@ -137,10 +141,6 @@ FolderName = "Floor09"
|
|||||||
FloorOdds = Array[float]([1.0])
|
FloorOdds = Array[float]([1.0])
|
||||||
Sproingy = 1.0
|
Sproingy = 1.0
|
||||||
|
|
||||||
[node name="Boss Floor 1" type="Node" parent="MapOrder"]
|
|
||||||
script = ExtResource("3_v14r0")
|
|
||||||
FloorName = 2
|
|
||||||
|
|
||||||
[node name="Floor11" type="Node" parent="MapOrder"]
|
[node name="Floor11" type="Node" parent="MapOrder"]
|
||||||
script = ExtResource("2_00xd7")
|
script = ExtResource("2_00xd7")
|
||||||
FolderName = "Floor11"
|
FolderName = "Floor11"
|
||||||
|
|||||||
@@ -15,13 +15,13 @@ public partial class BossRoomA : Node3D, IBossRoom, IDungeonFloor
|
|||||||
|
|
||||||
[Node] public Marker3D PlayerSpawn { get; set; } = default!;
|
[Node] public Marker3D PlayerSpawn { get; set; } = default!;
|
||||||
|
|
||||||
[Node] public Node3D HorseHeadStatue { get; set; } = default!;
|
//[Node] public Node3D HorseHeadStatue { get; set; } = default!;
|
||||||
|
|
||||||
[Node] public Node3D OxFaceStatue { get; set; } = default!;
|
[Node] public Node3D OxFaceStatue { get; set; } = default!;
|
||||||
|
|
||||||
[Node] public BossTypeA OxFace { get; set; } = default!;
|
[Node] public BossTypeA OxFace { get; set; } = default!;
|
||||||
|
|
||||||
[Node] public BossTypeA HorseFace { get; set; } = default!;
|
//[Node] public BossTypeA HorseFace { get; set; } = default!;
|
||||||
|
|
||||||
[Node] public Area3D ActivateTrap { get; set; } = default!;
|
[Node] public Area3D ActivateTrap { get; set; } = default!;
|
||||||
|
|
||||||
@@ -35,45 +35,45 @@ public partial class BossRoomA : Node3D, IBossRoom, IDungeonFloor
|
|||||||
|
|
||||||
public void OnReady()
|
public void OnReady()
|
||||||
{
|
{
|
||||||
ActivateTrap.BodyEntered += ActivateTrap_BodyEntered;
|
ActivateTrap.BodyEntered += ActivateTrap_BodyEntered;
|
||||||
_exit.AreaEntered += Exit_AreaEntered;
|
_exit.AreaEntered += Exit_AreaEntered;
|
||||||
OxFace.HealthComponent.HealthReachedZero += CheckForBossFightEnd;
|
OxFace.HealthComponent.HealthReachedZero += CheckForBossFightEnd;
|
||||||
HorseFace.HealthComponent.HealthReachedZero += CheckForBossFightEnd;
|
//HorseFace.HealthComponent.HealthReachedZero += CheckForBossFightEnd;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ActivateTrap_BodyEntered(Node3D body)
|
private void ActivateTrap_BodyEntered(Node3D body)
|
||||||
{
|
{
|
||||||
ActivateTrap.BodyEntered -= ActivateTrap_BodyEntered;
|
ActivateTrap.BodyEntered -= ActivateTrap_BodyEntered;
|
||||||
StartBossFight();
|
StartBossFight();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void StartBossFight()
|
public void StartBossFight()
|
||||||
{
|
{
|
||||||
OxFaceStatue.Hide();
|
OxFaceStatue.Hide();
|
||||||
HorseHeadStatue.Hide();
|
//HorseHeadStatue.Hide();
|
||||||
OxFace.StartFight();
|
OxFace.StartFight();
|
||||||
HorseFace.StartFight();
|
//HorseFace.StartFight();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CheckForBossFightEnd()
|
private void CheckForBossFightEnd()
|
||||||
{
|
{
|
||||||
if (OxFace.HealthComponent.CurrentHP.Value <= 0 && HorseFace.HealthComponent.CurrentHP.Value <= 0)
|
if (OxFace.HealthComponent.CurrentHP.Value <= 0) //&& HorseFace.HealthComponent.CurrentHP.Value <= 0)
|
||||||
OnBossFightEnded();
|
OnBossFightEnded();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnBossFightEnded()
|
public void OnBossFightEnded()
|
||||||
{
|
{
|
||||||
GateCollision.CallDeferred(MethodName.QueueFree);
|
GateCollision.CallDeferred(MethodName.QueueFree);
|
||||||
LOCKEDGATE.Hide();
|
LOCKEDGATE.Hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ExitReached()
|
public void ExitReached()
|
||||||
=> Game.FloorExitReached();
|
=> Game.FloorExitReached();
|
||||||
|
|
||||||
private void Exit_AreaEntered(Area3D area)
|
private void Exit_AreaEntered(Area3D area)
|
||||||
{
|
{
|
||||||
if (area.GetOwner() is IPlayer)
|
if (area.GetOwner() is IPlayer)
|
||||||
ExitReached();
|
ExitReached();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void InitializeDungeon()
|
public void InitializeDungeon()
|
||||||
|
|||||||
@@ -13,21 +13,18 @@ public partial class CorridorRoom : Node3D
|
|||||||
[Dependency] IGame Game => this.DependOn<IGame>();
|
[Dependency] IGame Game => this.DependOn<IGame>();
|
||||||
|
|
||||||
[Node] private Area3D _room { get; set; } = default!;
|
[Node] private Area3D _room { get; set; } = default!;
|
||||||
[Node] private MeshInstance3D _minimap { get; set; } = default!;
|
|
||||||
|
|
||||||
private bool _playerDiscoveredRoom = false;
|
private bool _playerDiscoveredRoom = false;
|
||||||
|
|
||||||
public void Setup()
|
public void Setup()
|
||||||
{
|
{
|
||||||
if (_room != null)
|
if (_room != null)
|
||||||
_room.BodyEntered += Room_BodyEntered;
|
_room.BodyEntered += Room_BodyEntered;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Room_BodyEntered(Node3D body)
|
private void Room_BodyEntered(Node3D body)
|
||||||
{
|
{
|
||||||
if (!Game.CurrentFloor.FloorIsLoaded)
|
if (!Game.CurrentFloor.FloorIsLoaded)
|
||||||
return;
|
return;
|
||||||
if (body is IPlayer)
|
|
||||||
_minimap.Show();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,8 +12,6 @@ public abstract partial class DungeonRoom : Node3D, IDungeonRoom
|
|||||||
{
|
{
|
||||||
public override void _Notification(int what) => this.Notify(what);
|
public override void _Notification(int what) => this.Notify(what);
|
||||||
|
|
||||||
[Node] private MeshInstance3D _minimap { get; set; } = default!;
|
|
||||||
|
|
||||||
public bool IsPlayerInRoom => _isPlayerInRoom;
|
public bool IsPlayerInRoom => _isPlayerInRoom;
|
||||||
|
|
||||||
public bool PlayerDiscoveredRoom => _playerDiscoveredRoom;
|
public bool PlayerDiscoveredRoom => _playerDiscoveredRoom;
|
||||||
@@ -28,47 +26,46 @@ public abstract partial class DungeonRoom : Node3D, IDungeonRoom
|
|||||||
|
|
||||||
public void Setup()
|
public void Setup()
|
||||||
{
|
{
|
||||||
_enemiesInRoom = [];
|
_enemiesInRoom = [];
|
||||||
if (_room != null)
|
if (_room != null)
|
||||||
{
|
{
|
||||||
_room.BodyEntered += Room_BodyEntered;
|
_room.BodyEntered += Room_BodyEntered;
|
||||||
_room.BodyExited += Room_BodyExited;
|
_room.BodyExited += Room_BodyExited;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Room_BodyExited(Node3D body)
|
private void Room_BodyExited(Node3D body)
|
||||||
{
|
{
|
||||||
if (body is IEnemy enemy)
|
if (body is IEnemy enemy)
|
||||||
_enemiesInRoom = _enemiesInRoom.Remove(enemy);
|
_enemiesInRoom = _enemiesInRoom.Remove(enemy);
|
||||||
if (body is IPlayer)
|
if (body is IPlayer)
|
||||||
_isPlayerInRoom = false;
|
_isPlayerInRoom = false;
|
||||||
}
|
}
|
||||||
private void Room_BodyEntered(Node3D body)
|
private void Room_BodyEntered(Node3D body)
|
||||||
{
|
{
|
||||||
if (body is IEnemy enemy)
|
if (body is IEnemy enemy)
|
||||||
_enemiesInRoom = _enemiesInRoom.Add(enemy);
|
_enemiesInRoom = _enemiesInRoom.Add(enemy);
|
||||||
if (body is IPlayer)
|
if (body is IPlayer)
|
||||||
if (_playerDiscoveredRoom)
|
if (_playerDiscoveredRoom)
|
||||||
_isPlayerInRoom = true;
|
_isPlayerInRoom = true;
|
||||||
else
|
else
|
||||||
OnPlayerDiscoveringRoom();
|
OnPlayerDiscoveringRoom();
|
||||||
}
|
}
|
||||||
|
|
||||||
public ImmutableList<IEnemy> GetEnemiesInCurrentRoom()
|
public ImmutableList<IEnemy> GetEnemiesInCurrentRoom()
|
||||||
{
|
{
|
||||||
return _enemiesInRoom;
|
return _enemiesInRoom;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnPlayerDiscoveringRoom()
|
private void OnPlayerDiscoveringRoom()
|
||||||
{
|
{
|
||||||
_isPlayerInRoom = true;
|
_isPlayerInRoom = true;
|
||||||
_playerDiscoveredRoom = true;
|
_playerDiscoveredRoom = true;
|
||||||
_minimap.Show();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnExitTree()
|
public void OnExitTree()
|
||||||
{
|
{
|
||||||
_room.BodyEntered -= Room_BodyEntered;
|
_room.BodyEntered -= Room_BodyEntered;
|
||||||
_room.BodyExited -= Room_BodyExited;
|
_room.BodyExited -= Room_BodyExited;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,54 +19,57 @@ public partial class MonsterRoom : DungeonRoom
|
|||||||
|
|
||||||
public override void _Ready()
|
public override void _Ready()
|
||||||
{
|
{
|
||||||
SpawnItems();
|
SpawnItems();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SpawnEnemies(Godot.Collections.Dictionary<EnemyType, float> enemyInfo)
|
public void SpawnEnemies(Godot.Collections.Dictionary<EnemyType, float> enemyInfo)
|
||||||
{
|
{
|
||||||
if (enemyInfo == null || !enemyInfo.Any(x => x.Value > 0))
|
if (enemyInfo == null || !enemyInfo.Any(x => x.Value > 0))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var rng = new RandomNumberGenerator();
|
var rng = new RandomNumberGenerator();
|
||||||
rng.Randomize();
|
rng.Randomize();
|
||||||
var enemySpawnPoints = EnemySpawnPoints.GetChildren();
|
var enemySpawnPoints = EnemySpawnPoints.GetChildren();
|
||||||
var numberOfEnemiesToSpawn = rng.RandiRange(1, enemySpawnPoints.Count);
|
var numberOfEnemiesToSpawn = rng.RandiRange(1, enemySpawnPoints.Count);
|
||||||
|
|
||||||
foreach (var spawnPoint in enemySpawnPoints.Cast<Marker3D>())
|
foreach (var spawnPoint in enemySpawnPoints.Cast<Marker3D>())
|
||||||
{
|
{
|
||||||
if (numberOfEnemiesToSpawn <= 0)
|
if (numberOfEnemiesToSpawn <= 0)
|
||||||
break;
|
break;
|
||||||
numberOfEnemiesToSpawn--;
|
numberOfEnemiesToSpawn--;
|
||||||
|
|
||||||
var index = rng.RandWeighted([.. enemyInfo.Values]);
|
var index = rng.RandWeighted([.. enemyInfo.Values]);
|
||||||
var selectedEnemy = enemyInfo.ElementAt((int)index);
|
var selectedEnemy = enemyInfo.ElementAt((int)index);
|
||||||
var instantiatedEnemy = EnemyTypeToEnemyConverter.Convert(selectedEnemy.Key);
|
var instantiatedEnemy = EnemyTypeToEnemyConverter.Convert(selectedEnemy.Key);
|
||||||
instantiatedEnemy.Position = new Vector3(spawnPoint.Position.X, 1.75f, spawnPoint.Position.Z);
|
instantiatedEnemy.Position = new Vector3(spawnPoint.Position.X, 0f, spawnPoint.Position.Z);
|
||||||
AddChild(instantiatedEnemy);
|
AddChild(instantiatedEnemy);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// RegularFlame.GetChildren();
|
||||||
|
//
|
||||||
private void SpawnItems()
|
private void SpawnItems()
|
||||||
{
|
{
|
||||||
if (ItemSpawnPoints == null)
|
if (ItemSpawnPoints == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var itemSpawnPoints = ItemSpawnPoints.GetChildren();
|
var itemSpawnPoints = ItemSpawnPoints.GetChildren();
|
||||||
var rng = new RandomNumberGenerator();
|
var rng = new RandomNumberGenerator();
|
||||||
rng.Randomize();
|
rng.Randomize();
|
||||||
var numberOfItemsToSpawn = rng.RandiRange(1, itemSpawnPoints.Count);
|
var numberOfItemsToSpawn = rng.RandiRange(1, itemSpawnPoints.Count);
|
||||||
itemSpawnPoints.Shuffle();
|
itemSpawnPoints.Shuffle();
|
||||||
var database = ItemDatabase.Instance;
|
var database = ItemDatabase.Instance;
|
||||||
foreach (var spawnPoint in itemSpawnPoints.Cast<Marker3D>())
|
foreach (var spawnPoint in itemSpawnPoints.Cast<Marker3D>())
|
||||||
{
|
{
|
||||||
if (numberOfItemsToSpawn <= 0)
|
if (numberOfItemsToSpawn <= 0)
|
||||||
break;
|
break;
|
||||||
numberOfItemsToSpawn--;
|
numberOfItemsToSpawn--;
|
||||||
|
|
||||||
var selectedItem = database.PickItem<InventoryItem>();
|
var selectedItem = database.PickItem<InventoryItem>();
|
||||||
var duplicated = selectedItem.Duplicate((int)DuplicateFlags.UseInstantiation) as Node3D;
|
var duplicated = selectedItem.Duplicate((int)DuplicateFlags.UseInstantiation) as Node3D;
|
||||||
duplicated.Position = new Vector3(spawnPoint.Position.X, -1.5f, spawnPoint.Position.Z);
|
duplicated.Position = new Vector3(spawnPoint.Position.X, 0, spawnPoint.Position.Z);
|
||||||
AddChild(duplicated);
|
AddChild(duplicated);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -1,12 +1,10 @@
|
|||||||
[gd_scene load_steps=86 format=4 uid="uid://5ja3qxn8h7iw"]
|
[gd_scene load_steps=84 format=4 uid="uid://5ja3qxn8h7iw"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://tqyybt313web" path="res://src/map/dungeon/code/BossRoomA.cs" id="1_0h3lb"]
|
[ext_resource type="Script" uid="uid://tqyybt313web" path="res://src/map/dungeon/code/BossRoomA.cs" id="1_0h3lb"]
|
||||||
[ext_resource type="Texture2D" uid="uid://clc5f6yyc7sdw" path="res://src/map/assets/Jomon Bells/BELL ANIMATIONS_concrete_0003_color_1k.png" id="2_lqw6r"]
|
[ext_resource type="Texture2D" uid="uid://clc5f6yyc7sdw" path="res://src/map/assets/Jomon Bells/BELL ANIMATIONS_concrete_0003_color_1k.png" id="2_lqw6r"]
|
||||||
[ext_resource type="PackedScene" uid="uid://j7xsk4fv6f4q" path="res://src/map/dungeon/models/Special Floors & Rooms/Boss Floor A/15_A1_BOSS FLOOR A_VER.2.glb" id="2_r3w6s"]
|
[ext_resource type="PackedScene" uid="uid://j7xsk4fv6f4q" path="res://src/map/dungeon/models/Special Floors & Rooms/Boss Floor A/15_A1_BOSS FLOOR A_VER.2.glb" id="2_r3w6s"]
|
||||||
[ext_resource type="Texture2D" uid="uid://dipyrtjclqae1" path="res://src/map/assets/Jomon Bells/BELL ANIMATIONS_COLUMN.jpg" id="3_ucaw1"]
|
[ext_resource type="Texture2D" uid="uid://dipyrtjclqae1" path="res://src/map/assets/Jomon Bells/BELL ANIMATIONS_COLUMN.jpg" id="3_ucaw1"]
|
||||||
[ext_resource type="Texture2D" uid="uid://d1xdvf8awh4bi" path="res://src/map/assets/Jomon Bells/BELL ANIMATIONS_CHAIN_TEX.png" id="4_i4jo4"]
|
[ext_resource type="Texture2D" uid="uid://d1xdvf8awh4bi" path="res://src/map/assets/Jomon Bells/BELL ANIMATIONS_CHAIN_TEX.png" id="4_i4jo4"]
|
||||||
[ext_resource type="PackedScene" uid="uid://8yaqqojv4nuv" path="res://src/enemy/enemy_types/14. horse_head/HorseHeadStatue.tscn" id="24_r1rk5"]
|
|
||||||
[ext_resource type="PackedScene" uid="uid://2wibfnu2jvlv" path="res://src/enemy/enemy_types/14. horse_head/HorseFace.tscn" id="25_a482y"]
|
|
||||||
[ext_resource type="PackedScene" uid="uid://bvv5giqyrhtl1" path="res://src/enemy/enemy_types/15. ox_face/OxFaceStatue.tscn" id="26_futcf"]
|
[ext_resource type="PackedScene" uid="uid://bvv5giqyrhtl1" path="res://src/enemy/enemy_types/15. ox_face/OxFaceStatue.tscn" id="26_futcf"]
|
||||||
[ext_resource type="PackedScene" uid="uid://6dnsw37d1uw4" path="res://src/enemy/enemy_types/15. ox_face/OxFace.tscn" id="27_g6y6v"]
|
[ext_resource type="PackedScene" uid="uid://6dnsw37d1uw4" path="res://src/enemy/enemy_types/15. ox_face/OxFace.tscn" id="27_g6y6v"]
|
||||||
[ext_resource type="Shader" uid="uid://dr68ani6ouefm" path="res://src/map/map shaders/B1 Cloud Roll.gdshader" id="30_lmjp4"]
|
[ext_resource type="Shader" uid="uid://dr68ani6ouefm" path="res://src/map/map shaders/B1 Cloud Roll.gdshader" id="30_lmjp4"]
|
||||||
@@ -662,6 +660,7 @@ script = ExtResource("1_0h3lb")
|
|||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -157.601, -16.1094, 21.8408)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -157.601, -16.1094, 21.8408)
|
||||||
|
|
||||||
[node name="Collision" type="Node3D" parent="."]
|
[node name="Collision" type="Node3D" parent="."]
|
||||||
|
visible = false
|
||||||
|
|
||||||
[node name="StaticBody3D2" type="StaticBody3D" parent="Collision"]
|
[node name="StaticBody3D2" type="StaticBody3D" parent="Collision"]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -88.2175, -1.5279, -0.620708)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -88.2175, -1.5279, -0.620708)
|
||||||
@@ -800,6 +799,9 @@ transform = Transform3D(19.342, 0, 0, 0, 3.12, 0, 0, 0, 4.493, -118.232, 0.07999
|
|||||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Collision/StaticBody3D5"]
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="Collision/StaticBody3D5"]
|
||||||
shape = SubResource("ConcavePolygonShape3D_1txpk")
|
shape = SubResource("ConcavePolygonShape3D_1txpk")
|
||||||
|
|
||||||
|
[node name="GateCollision" type="Node3D" parent="Collision"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
|
||||||
[node name="Doors" type="Node3D" parent="."]
|
[node name="Doors" type="Node3D" parent="."]
|
||||||
|
|
||||||
[node name="Spawn Points" type="Node3D" parent="."]
|
[node name="Spawn Points" type="Node3D" parent="."]
|
||||||
@@ -823,35 +825,17 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -240.071, 36.4279, 34.624)
|
|||||||
visible = false
|
visible = false
|
||||||
shape = SubResource("BoxShape3D_pkvyy")
|
shape = SubResource("BoxShape3D_pkvyy")
|
||||||
|
|
||||||
[node name="Horse Head" type="Node3D" parent="Room"]
|
|
||||||
|
|
||||||
[node name="HorseHeadStatue" parent="Room/Horse Head" instance=ExtResource("24_r1rk5")]
|
|
||||||
unique_name_in_owner = true
|
|
||||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -102.157, -2.30863, 13.3664)
|
|
||||||
|
|
||||||
[node name="HorseFace" parent="Room/Horse Head" instance=ExtResource("25_a482y")]
|
|
||||||
unique_name_in_owner = true
|
|
||||||
transform = Transform3D(-6.55671e-09, 0, -0.15, 0, 0.15, 0, 0.15, 0, -6.55671e-09, -102.157, -0.510939, 13.3664)
|
|
||||||
visible = false
|
|
||||||
PrimaryAttackElementalType = null
|
|
||||||
PrimaryAttackElementalDamageBonus = null
|
|
||||||
InitialHP = null
|
|
||||||
|
|
||||||
[node name="OxFace" type="Node3D" parent="Room"]
|
[node name="OxFace" type="Node3D" parent="Room"]
|
||||||
transform = Transform3D(-6.55671e-09, 0, -0.15, 0, 0.15, 0, 0.15, 0, -6.55671e-09, -102.157, -0.510939, 13.3664)
|
transform = Transform3D(-6.55671e-09, 0, -0.15, 0, 0.15, 0, 0.15, 0, -6.55671e-09, -102.157, -0.510939, 13.3664)
|
||||||
|
|
||||||
[node name="OxFaceStatue" parent="Room/OxFace" instance=ExtResource("26_futcf")]
|
[node name="OxFaceStatue" parent="Room/OxFace" instance=ExtResource("26_futcf")]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
transform = Transform3D(6.66667, 0, 0, 0, 6.66667, 0, 0, 0, 6.66667, 54.7793, -11.9846, -4.01331)
|
transform = Transform3D(6.66667, 0, 0, 0, 6.66667, 0, 0, 0, 6.66667, 54.7793, -11.9846, -4.01331)
|
||||||
visible = false
|
|
||||||
|
|
||||||
[node name="OxFace" parent="Room/OxFace" instance=ExtResource("27_g6y6v")]
|
[node name="OxFace" parent="Room/OxFace" instance=ExtResource("27_g6y6v")]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 58.194, 0.2072, -3.02661)
|
transform = Transform3D(1, 0, 3.55271e-15, 0, 1, 0, -3.55271e-15, 0, 1, 58.194, -12.7983, -3.02698)
|
||||||
visible = false
|
visible = false
|
||||||
PrimaryAttackElementalType = null
|
|
||||||
PrimaryAttackElementalDamageBonus = null
|
|
||||||
InitialHP = null
|
|
||||||
|
|
||||||
[node name="Exit" type="Area3D" parent="Room"]
|
[node name="Exit" type="Area3D" parent="Room"]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
@@ -864,6 +848,7 @@ transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 1.5910
|
|||||||
shape = SubResource("BoxShape3D_1qa0g")
|
shape = SubResource("BoxShape3D_1qa0g")
|
||||||
|
|
||||||
[node name="Minimap" type="Node3D" parent="."]
|
[node name="Minimap" type="Node3D" parent="."]
|
||||||
|
visible = false
|
||||||
|
|
||||||
[node name="Boss Floor Environment" type="WorldEnvironment" parent="."]
|
[node name="Boss Floor Environment" type="WorldEnvironment" parent="."]
|
||||||
environment = SubResource("Environment_1qa0g")
|
environment = SubResource("Environment_1qa0g")
|
||||||
@@ -919,6 +904,7 @@ transform = Transform3D(0.565, 0, 0, 0, 0.565, 0, 0, 0, 0.565, -92.0811, -2.7728
|
|||||||
transform = Transform3D(0.55, 0, 0, 0, 0.55, 0, 0, 0, 0.55, -92.04, -2.83756, 3.9847)
|
transform = Transform3D(0.55, 0, 0, 0, 0.55, 0, 0, 0, 0.55, -92.04, -2.83756, 3.9847)
|
||||||
|
|
||||||
[node name="NavigationRegion3D" type="NavigationRegion3D" parent="."]
|
[node name="NavigationRegion3D" type="NavigationRegion3D" parent="."]
|
||||||
|
visible = false
|
||||||
navigation_mesh = SubResource("NavigationMesh_eanap")
|
navigation_mesh = SubResource("NavigationMesh_eanap")
|
||||||
|
|
||||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="NavigationRegion3D"]
|
[node name="MeshInstance3D" type="MeshInstance3D" parent="NavigationRegion3D"]
|
||||||
@@ -998,3 +984,6 @@ libraries = {
|
|||||||
&"": SubResource("AnimationLibrary_cm2l0")
|
&"": SubResource("AnimationLibrary_cm2l0")
|
||||||
}
|
}
|
||||||
autoplay = "Animation"
|
autoplay = "Animation"
|
||||||
|
|
||||||
|
[node name="LOCKEDGATE" type="MeshInstance3D" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
|||||||
@@ -10882,6 +10882,44 @@ billboard = 1
|
|||||||
sprite_frames = SubResource("SpriteFrames_cnruo")
|
sprite_frames = SubResource("SpriteFrames_cnruo")
|
||||||
frame_progress = 0.271099
|
frame_progress = 0.271099
|
||||||
|
|
||||||
|
[node name="RegularFlame" type="Node3D" parent="Node3D/Flames"]
|
||||||
|
|
||||||
|
[node name="REGULAR FLAME" type="AnimatedSprite3D" parent="Node3D/Flames/RegularFlame"]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.38918, 0)
|
||||||
|
billboard = 1
|
||||||
|
sprite_frames = SubResource("SpriteFrames_yw3t6")
|
||||||
|
frame_progress = 0.180404
|
||||||
|
|
||||||
|
[node name="REGULAR FLAME2" type="AnimatedSprite3D" parent="Node3D/Flames/RegularFlame"]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.38918, 0)
|
||||||
|
billboard = 1
|
||||||
|
sprite_frames = SubResource("SpriteFrames_yw3t6")
|
||||||
|
frame_progress = 0.180404
|
||||||
|
|
||||||
|
[node name="REGULAR FLAME3" type="AnimatedSprite3D" parent="Node3D/Flames/RegularFlame"]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.38918, 0)
|
||||||
|
billboard = 1
|
||||||
|
sprite_frames = SubResource("SpriteFrames_yw3t6")
|
||||||
|
frame_progress = 0.180404
|
||||||
|
|
||||||
|
[node name="REGULAR FLAME4" type="AnimatedSprite3D" parent="Node3D/Flames/RegularFlame"]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.38918, 0)
|
||||||
|
billboard = 1
|
||||||
|
sprite_frames = SubResource("SpriteFrames_yw3t6")
|
||||||
|
frame_progress = 0.180404
|
||||||
|
|
||||||
|
[node name="REGULAR FLAME5" type="AnimatedSprite3D" parent="Node3D/Flames/RegularFlame"]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.38918, 0)
|
||||||
|
billboard = 1
|
||||||
|
sprite_frames = SubResource("SpriteFrames_yw3t6")
|
||||||
|
frame_progress = 0.180404
|
||||||
|
|
||||||
|
[node name="REGULAR FLAME6" type="AnimatedSprite3D" parent="Node3D/Flames/RegularFlame"]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.38918, 0)
|
||||||
|
billboard = 1
|
||||||
|
sprite_frames = SubResource("SpriteFrames_yw3t6")
|
||||||
|
frame_progress = 0.180404
|
||||||
|
|
||||||
[node name="FAR SCENERY" type="MeshInstance3D" parent="Node3D"]
|
[node name="FAR SCENERY" type="MeshInstance3D" parent="Node3D"]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -146.027, 31.1617, -329.541)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -146.027, 31.1617, -329.541)
|
||||||
visible = false
|
visible = false
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
[gd_scene load_steps=23 format=3 uid="uid://tpgwccr6v43e"]
|
[gd_scene load_steps=20 format=3 uid="uid://tpgwccr6v43e"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://dhollu4j3pynq" path="res://src/map/dungeon/code/MonsterRoom.cs" id="1_58osi"]
|
[ext_resource type="Script" uid="uid://dhollu4j3pynq" path="res://src/map/dungeon/code/MonsterRoom.cs" id="1_58osi"]
|
||||||
[ext_resource type="PackedScene" uid="uid://cljj515aklhoq" path="res://src/map/dungeon/models/Area 1/Tree/A1-Tree.glb" id="2_rr4cd"]
|
[ext_resource type="PackedScene" uid="uid://cljj515aklhoq" path="res://src/map/dungeon/models/Area 1/Tree/A1-Tree.glb" id="2_rr4cd"]
|
||||||
[ext_resource type="Texture2D" uid="uid://dw50ys561j8no" path="res://src/map/assets/DUST_1.png" id="4_e73oq"]
|
[ext_resource type="Texture2D" uid="uid://dw50ys561j8no" path="res://src/map/assets/DUST_1.png" id="4_e73oq"]
|
||||||
[ext_resource type="Texture2D" uid="uid://ba7ch5rr7qj1d" path="res://src/minimap/textures/Room Maps/mi_treeante.png" id="7_hy27a"]
|
|
||||||
|
|
||||||
[sub_resource type="BoxShape3D" id="BoxShape3D_q0uor"]
|
[sub_resource type="BoxShape3D" id="BoxShape3D_q0uor"]
|
||||||
size = Vector3(7.93076, 7.25739, 0.543945)
|
size = Vector3(7.93076, 7.25739, 0.543945)
|
||||||
@@ -76,14 +75,6 @@ size = Vector2(0.1, 0.1)
|
|||||||
subdivide_width = 1
|
subdivide_width = 1
|
||||||
subdivide_depth = 1
|
subdivide_depth = 1
|
||||||
|
|
||||||
[sub_resource type="PlaneMesh" id="PlaneMesh_jfnkd"]
|
|
||||||
size = Vector2(20, 16)
|
|
||||||
|
|
||||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_vyfk3"]
|
|
||||||
shading_mode = 0
|
|
||||||
albedo_texture = ExtResource("7_hy27a")
|
|
||||||
texture_filter = 0
|
|
||||||
|
|
||||||
[node name="Antechamber B" type="Node3D"]
|
[node name="Antechamber B" type="Node3D"]
|
||||||
script = ExtResource("1_58osi")
|
script = ExtResource("1_58osi")
|
||||||
|
|
||||||
@@ -215,16 +206,6 @@ local_coords = true
|
|||||||
process_material = SubResource("ParticleProcessMaterial_vqrrr")
|
process_material = SubResource("ParticleProcessMaterial_vqrrr")
|
||||||
draw_pass_1 = SubResource("QuadMesh_55djs")
|
draw_pass_1 = SubResource("QuadMesh_55djs")
|
||||||
|
|
||||||
[node name="Minimap" type="Node3D" parent="."]
|
|
||||||
|
|
||||||
[node name="Minimap" type="MeshInstance3D" parent="Minimap"]
|
|
||||||
unique_name_in_owner = true
|
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 8)
|
|
||||||
visible = false
|
|
||||||
mesh = SubResource("PlaneMesh_jfnkd")
|
|
||||||
skeleton = NodePath("../cor_t_intersection")
|
|
||||||
surface_material_override/0 = SubResource("StandardMaterial3D_vyfk3")
|
|
||||||
|
|
||||||
[node name="OmniLight3D" type="OmniLight3D" parent="."]
|
[node name="OmniLight3D" type="OmniLight3D" parent="."]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.383, 6.70561, 8.71907)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.383, 6.70561, 8.71907)
|
||||||
light_energy = 1.904
|
light_energy = 1.904
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
using Chickensoft.AutoInject;
|
using Chickensoft.AutoInject;
|
||||||
using Chickensoft.Introspection;
|
using Chickensoft.Introspection;
|
||||||
using Godot;
|
using Godot;
|
||||||
|
using Zennysoft.Ma.Adapter;
|
||||||
|
|
||||||
namespace Zennysoft.Game.Ma;
|
namespace Zennysoft.Game.Ma;
|
||||||
[Meta(typeof(IAutoNode))]
|
[Meta(typeof(IAutoNode))]
|
||||||
@@ -10,15 +11,28 @@ public partial class Minimap : Control
|
|||||||
|
|
||||||
[Dependency] public IMap _map => this.DependOn<IMap>();
|
[Dependency] public IMap _map => this.DependOn<IMap>();
|
||||||
|
|
||||||
|
[Dependency] public IPlayer _player => this.DependOn<IPlayer>();
|
||||||
|
|
||||||
|
[Node] public Camera3D MinimapCamera { get; set; }
|
||||||
|
|
||||||
[Node] public Label LayerNumberText { get; set; } = default!;
|
[Node] public Label LayerNumberText { get; set; } = default!;
|
||||||
|
|
||||||
|
private bool _ready = false;
|
||||||
|
|
||||||
public void OnResolved()
|
public void OnResolved()
|
||||||
{
|
{
|
||||||
_map.CurrentFloorNumber.Sync += CurrentFloorNumber_Sync;
|
_map.CurrentFloorNumber.Sync += CurrentFloorNumber_Sync;
|
||||||
|
_ready = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void _PhysicsProcess(double delta)
|
||||||
|
{
|
||||||
|
if (_ready)
|
||||||
|
MinimapCamera.Position = new Vector3(_player.GlobalPosition.X, MinimapCamera.Position.Y, _player.GlobalPosition.Z);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CurrentFloorNumber_Sync(int obj)
|
private void CurrentFloorNumber_Sync(int obj)
|
||||||
{
|
{
|
||||||
LayerNumberText.Text = $"{obj:D2}";
|
LayerNumberText.Text = $"{obj:D2}";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -63,8 +63,9 @@ handle_input_locally = false
|
|||||||
size = Vector2i(350, 300)
|
size = Vector2i(350, 300)
|
||||||
render_target_update_mode = 4
|
render_target_update_mode = 4
|
||||||
|
|
||||||
[node name="Minimap Camera" type="Camera3D" parent="CenterContainer/SubViewportContainer/SubViewport"]
|
[node name="MinimapCamera" type="Camera3D" parent="CenterContainer/SubViewportContainer/SubViewport"]
|
||||||
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -21.7374, 240.05, 2.76249)
|
unique_name_in_owner = true
|
||||||
|
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -21.7374, 146.05, 2.76249)
|
||||||
cull_mask = 2
|
cull_mask = 2
|
||||||
environment = SubResource("Environment_yn75n")
|
environment = SubResource("Environment_yn75n")
|
||||||
attributes = SubResource("CameraAttributesPractical_yn75n")
|
attributes = SubResource("CameraAttributesPractical_yn75n")
|
||||||
|
|||||||
@@ -20,53 +20,58 @@ public partial class Npc : Node3D
|
|||||||
|
|
||||||
public void OnReady()
|
public void OnReady()
|
||||||
{
|
{
|
||||||
SetPhysicsProcess(true);
|
SetPhysicsProcess(true);
|
||||||
DialogueZone.BodyEntered += DialogueZone_BodyEntered;
|
DialogueZone.BodyEntered += DialogueZone_BodyEntered;
|
||||||
DialogueZone.BodyExited += DialogueZone_BodyExited;
|
DialogueZone.BodyExited += DialogueZone_BodyExited;
|
||||||
Hitbox.AreaEntered += Hitbox_AreaEntered;
|
Hitbox.AreaEntered += Hitbox_AreaEntered;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Hitbox_AreaEntered(Area3D area)
|
private void Hitbox_AreaEntered(Area3D area)
|
||||||
{
|
{
|
||||||
if (area.GetOwner() is ThrownItem thrownItem)
|
if (area.GetOwner() is ThrownItem thrownItem)
|
||||||
{
|
{
|
||||||
DialogueController.ShowDialogue(Dialogue, "get_item");
|
DialogueController.ShowDialogue(Dialogue, "get_item");
|
||||||
thrownItem.QueueFree();
|
thrownItem.QueueFree();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
DialogueController.ShowDialogue(Dialogue, "hit");
|
DialogueController.ShowDialogue(Dialogue, "hit");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Hitbox_BodyEntered(Node body)
|
private void Hitbox_BodyEntered(Node body)
|
||||||
{
|
{
|
||||||
DialogueController.ShowDialogue(Dialogue, "hit");
|
DialogueController.ShowDialogue(Dialogue, "hit");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DialogueZone_BodyExited(Node3D body)
|
private void DialogueZone_BodyExited(Node3D body)
|
||||||
{
|
{
|
||||||
_isInDialogueZone = false;
|
_isInDialogueZone = false;
|
||||||
DialogueController.Interrupt();
|
DialogueController.Interrupt();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DialogueZone_BodyEntered(Node3D body)
|
private void DialogueZone_BodyEntered(Node3D body)
|
||||||
{
|
{
|
||||||
_isInDialogueZone = true;
|
_isInDialogueZone = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void _UnhandledInput(InputEvent @event)
|
public override void _UnhandledInput(InputEvent @event)
|
||||||
{
|
{
|
||||||
if (@event.IsActionPressed(GameInputs.Interact) && _isInDialogueZone)
|
if (@event.IsActionPressed(GameInputs.Interact) && _isInDialogueZone)
|
||||||
{
|
{
|
||||||
if (_isIntroductionComplete)
|
DialogueController.ShowDialogue(Dialogue, "general");
|
||||||
DialogueController.ShowDialogue(Dialogue, "general");
|
}
|
||||||
else
|
}
|
||||||
{
|
|
||||||
DialogueController.ShowDialogue(Dialogue, "introduction");
|
public partial class Gesthemii : Npc
|
||||||
_isIntroductionComplete = true;
|
{
|
||||||
}
|
public override void _UnhandledInput(InputEvent @event)
|
||||||
}
|
{
|
||||||
|
if (@event.IsActionPressed(GameInputs.Interact) && _isInDialogueZone)
|
||||||
|
{
|
||||||
|
DialogueController.ShowDialogue(Dialogue, "general");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12331,6 +12331,7 @@ transform = Transform3D(-0.015, 0, -2.26494e-09, 0, 0.015, 0, 2.26494e-09, 0, -0
|
|||||||
|
|
||||||
[node name="tendomaya" parent="Camera/player_model" instance=ExtResource("3_74hqa")]
|
[node name="tendomaya" parent="Camera/player_model" instance=ExtResource("3_74hqa")]
|
||||||
transform = Transform3D(1.355, 0, 2.84217e-14, 0, 1.355, 0, -2.84217e-14, 0, 1.355, 3.57499e-06, 0, -23.676)
|
transform = Transform3D(1.355, 0, 2.84217e-14, 0, 1.355, 0, -2.84217e-14, 0, 1.355, 3.57499e-06, 0, -23.676)
|
||||||
|
visible = false
|
||||||
|
|
||||||
[node name="Lights" type="Node3D" parent="Camera"]
|
[node name="Lights" type="Node3D" parent="Camera"]
|
||||||
|
|
||||||
|
|||||||
3
Zennysoft.Game.Ma/stone.dialogue
Normal file
3
Zennysoft.Game.Ma/stone.dialogue
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
~ general
|
||||||
|
- Here's my hint
|
||||||
|
=> END
|
||||||
16
Zennysoft.Game.Ma/stone.dialogue.import
Normal file
16
Zennysoft.Game.Ma/stone.dialogue.import
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="dialogue_manager"
|
||||||
|
importer_version=15
|
||||||
|
type="Resource"
|
||||||
|
uid="uid://8wf6jvs78ncf"
|
||||||
|
path="res://.godot/imported/stone.dialogue-844f025f38603e82467c319c925d9163.tres"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://stone.dialogue"
|
||||||
|
dest_files=["res://.godot/imported/stone.dialogue-844f025f38603e82467c319c925d9163.tres"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
defaults=true
|
||||||
Reference in New Issue
Block a user