From da8c4209d788c8f584a30e1355808a776ca27ce7 Mon Sep 17 00:00:00 2001 From: Zenny Date: Thu, 5 Feb 2026 20:10:41 -0800 Subject: [PATCH] Fix annoying issue with LookAt Add jump scare --- .../Player/IPlayer.cs | 2 + Zennysoft.Game.Ma/project.godot | 2 +- Zennysoft.Game.Ma/src/enemy/Enemy.cs | 2 +- .../enemy_types/01. sproingy/Sproingy.tscn | 11 +- .../enemy_types/02. michael/Michael.tscn | 17 +- .../02. michael/MichaelModelView.tscn | 2 +- Zennysoft.Game.Ma/src/map/DungeonFloorNode.cs | 32 +++ Zennysoft.Game.Ma/src/map/Map.tscn | 195 +----------------- .../src/map/dungeon/code/DungeonRoom.cs | 48 ++--- .../src/map/dungeon/code/JumpScareRoom.cs | 31 +++ .../src/map/dungeon/code/JumpScareRoom.cs.uid | 1 + .../src/map/dungeon/code/MonsterRoom.cs | 75 ++++--- .../map/dungeon/floors/Floor01/Floor 1A.tscn | 6 +- .../rooms/Set A/12. Jump Scare Room.tscn | 20 +- .../src/npc/Proscenium/JumpScare.dialogue | 2 + .../npc/Proscenium/JumpScare.dialogue.import | 16 ++ Zennysoft.Game.Ma/src/player/Player.cs | 2 + Zennysoft.Game.Ma/src/player/Player.tscn | 6 +- 18 files changed, 197 insertions(+), 273 deletions(-) create mode 100644 Zennysoft.Game.Ma/src/map/dungeon/code/JumpScareRoom.cs create mode 100644 Zennysoft.Game.Ma/src/map/dungeon/code/JumpScareRoom.cs.uid create mode 100644 Zennysoft.Game.Ma/src/npc/Proscenium/JumpScare.dialogue create mode 100644 Zennysoft.Game.Ma/src/npc/Proscenium/JumpScare.dialogue.import diff --git a/Zennysoft.Game.Ma.Implementation/Player/IPlayer.cs b/Zennysoft.Game.Ma.Implementation/Player/IPlayer.cs index d6662b31d..7456dd566 100644 --- a/Zennysoft.Game.Ma.Implementation/Player/IPlayer.cs +++ b/Zennysoft.Game.Ma.Implementation/Player/IPlayer.cs @@ -24,6 +24,8 @@ public interface IPlayer : IKillable, ICharacterBody3D public void Unequip(EquipableItem equipable); + public void PlayJumpScareAnimation(); + public IInventory Inventory { get; } public IHealthComponent HealthComponent { get; } diff --git a/Zennysoft.Game.Ma/project.godot b/Zennysoft.Game.Ma/project.godot index bdef9115e..476b5c642 100644 --- a/Zennysoft.Game.Ma/project.godot +++ b/Zennysoft.Game.Ma/project.godot @@ -265,7 +265,7 @@ EnemyViewerWalk={ [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", "res://stone.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", "res://src/npc/Proscenium/JumpScare.dialogue") [layer_names] diff --git a/Zennysoft.Game.Ma/src/enemy/Enemy.cs b/Zennysoft.Game.Ma/src/enemy/Enemy.cs index 6f974c65e..cfc3f500e 100644 --- a/Zennysoft.Game.Ma/src/enemy/Enemy.cs +++ b/Zennysoft.Game.Ma/src/enemy/Enemy.cs @@ -228,7 +228,7 @@ public abstract partial class Enemy : CharacterBody3D, IEnemy, IProvide TargetPosition = targetPosition; diff --git a/Zennysoft.Game.Ma/src/enemy/enemy_types/01. sproingy/Sproingy.tscn b/Zennysoft.Game.Ma/src/enemy/enemy_types/01. sproingy/Sproingy.tscn index 6d00a3586..f2e9b901e 100644 --- a/Zennysoft.Game.Ma/src/enemy/enemy_types/01. sproingy/Sproingy.tscn +++ b/Zennysoft.Game.Ma/src/enemy/enemy_types/01. sproingy/Sproingy.tscn @@ -42,11 +42,11 @@ script = ExtResource("1_xsluo") [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, 2.18615, 0) +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 1.74339, 0) shape = SubResource("CapsuleShape3D_cwfph") [node name="Collision" type="Node3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.18615, 0) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.74339, 0) [node name="Collision" type="Area3D" parent="Collision"] collision_layer = 2048 @@ -84,13 +84,13 @@ collision_mask = 34 shape = SubResource("CylinderShape3D_drfkj") [node name="Visual" type="Node3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.1, 0) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.657239, 0) [node name="EnemyModelView" parent="Visual" instance=ExtResource("4_o3b7p")] unique_name_in_owner = true [node name="Components" type="Node3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.18615, 0) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.74339, 0) [node name="PatrolBehavior" parent="Components" instance=ExtResource("4_drfkj")] unique_name_in_owner = true @@ -109,9 +109,10 @@ _acquireTargetTime = 2.0 unique_name_in_owner = true avoidance_enabled = true radius = 1.0 +debug_enabled = true [node name="SFX" type="Node3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.18615, 0) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.74339, 0) [node name="AbsorbSFX" type="AudioStreamPlayer3D" parent="SFX"] unique_name_in_owner = true diff --git a/Zennysoft.Game.Ma/src/enemy/enemy_types/02. michael/Michael.tscn b/Zennysoft.Game.Ma/src/enemy/enemy_types/02. michael/Michael.tscn index 5f7833912..d9ca8a924 100644 --- a/Zennysoft.Game.Ma/src/enemy/enemy_types/02. michael/Michael.tscn +++ b/Zennysoft.Game.Ma/src/enemy/enemy_types/02. michael/Michael.tscn @@ -35,7 +35,7 @@ script = ExtResource("1_lb5oy") [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, 2.27161, 0) +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 1.71715, 0) collision_layer = 2 collision_mask = 2 @@ -45,22 +45,23 @@ shape = SubResource("CylinderShape3D_jbgmx") [node name="Raycast" type="RayCast3D" parent="."] unique_name_in_owner = true -transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 2.27161, 0) +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 1.71715, 0) target_position = Vector3(0, 0, -5) collision_mask = 3 +debug_shape_custom_color = Color(1, 0, 0, 1) [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.0824751, 2.48407, 0) +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -0.0824751, 1.92961, 0) shape = SubResource("CapsuleShape3D_0h5s2") [node name="EnemyModelView" parent="." instance=ExtResource("3_wrps7")] unique_name_in_owner = true -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0799522, 1.36029, 0) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0799522, 0.805832, 0) [node name="PlayerDetector" type="Area3D" parent="."] unique_name_in_owner = true -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.27161, 0) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.71715, 0) collision_layer = 0 collision_mask = 34 @@ -68,7 +69,7 @@ collision_mask = 34 shape = SubResource("CylinderShape3D_eek1b") [node name="Collision" type="Area3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.27161, 0) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.71715, 0) collision_layer = 2048 collision_mask = 0 @@ -77,7 +78,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.120117, 0.221246, 0) shape = SubResource("SphereShape3D_wrps7") [node name="Components" type="Node3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.27161, 0) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.71715, 0) [node name="PatrolBehavior" parent="Components" instance=ExtResource("5_fkx5j")] unique_name_in_owner = true @@ -96,7 +97,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.27161, 0) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.71715, 0) [node name="AbsorbSFX" type="AudioStreamPlayer3D" parent="HitSounds"] unique_name_in_owner = true diff --git a/Zennysoft.Game.Ma/src/enemy/enemy_types/02. michael/MichaelModelView.tscn b/Zennysoft.Game.Ma/src/enemy/enemy_types/02. michael/MichaelModelView.tscn index 78434fb65..1197bbf9e 100644 --- a/Zennysoft.Game.Ma/src/enemy/enemy_types/02. michael/MichaelModelView.tscn +++ b/Zennysoft.Game.Ma/src/enemy/enemy_types/02. michael/MichaelModelView.tscn @@ -1257,7 +1257,7 @@ autoplay = true bus = &"SFX" [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, 0.0219133, 0.0077811) +transform = Transform3D(0.38, 0, 0, 0, -1.66103e-08, 0.38, 0, -0.38, -1.66103e-08, 0.00393164, -0.728023, 0.0077811) transparency = 0.1 cast_shadow = 0 modulate = Color(1, 1, 1, 0.591) diff --git a/Zennysoft.Game.Ma/src/map/DungeonFloorNode.cs b/Zennysoft.Game.Ma/src/map/DungeonFloorNode.cs index 4e4ac3629..cce5b7986 100644 --- a/Zennysoft.Game.Ma/src/map/DungeonFloorNode.cs +++ b/Zennysoft.Game.Ma/src/map/DungeonFloorNode.cs @@ -42,4 +42,36 @@ public partial class DungeonFloorNode : FloorNode public float ShieldOfHeaven { get; set; } [Export] public float GoldSproingy { get; set; } + + [ExportGroup("True Route Spawn Rates")] + [Export] + public float TrueSproingy { get; set; } + [Export] + public float TrueMichael { get; set; } + [Export] + public float TrueFilthEater { get; set; } + [Export] + public float TrueSara { get; set; } + [Export] + public float TrueBallos { get; set; } + [Export] + public float TrueChariot { get; set; } + [Export] + public float TrueChinthe { get; set; } + [Export] + public float TrueGreenAmbassador { get; set; } + [Export] + public float TrueRedAmbassador { get; set; } + [Export] + public float TrueSteelAmbassador { get; set; } + [Export] + public float TrueAgniDemon { get; set; } + [Export] + public float TrueAqueosDemon { get; set; } + [Export] + public float TruePalan { get; set; } + [Export] + public float TrueShieldOfHeaven { get; set; } + [Export] + public float TrueGoldSproingy { get; set; } } diff --git a/Zennysoft.Game.Ma/src/map/Map.tscn b/Zennysoft.Game.Ma/src/map/Map.tscn index e5b0cff0a..18a01fb37 100644 --- a/Zennysoft.Game.Ma/src/map/Map.tscn +++ b/Zennysoft.Game.Ma/src/map/Map.tscn @@ -87,141 +87,50 @@ FloorName = 1 script = ExtResource("2_00xd7") FolderName = "Floor01" FloorOdds = Array[float]([0.33, 0.33, 0.33]) -Sproingy = null -Michael = 1.0 -FilthEater = null -Sara = null -Ballos = null -Chariot = null -Chinthe = null -GreenAmbassador = null -RedAmbassador = null -SteelAmbassador = null -AgniDemon = null -AqueosDemon = null -Palan = null -ShieldOfHeaven = null -GoldSproingy = null +Sproingy = 0.5 +Michael = 0.5 [node name="Floor02" type="Node" parent="MapOrder"] script = ExtResource("2_00xd7") FolderName = "Floor02" FloorOdds = Array[float]([0.5, 0.5]) -Sproingy = 1.0 -Michael = null -FilthEater = null -Sara = null -Ballos = null -Chariot = null -Chinthe = null -GreenAmbassador = null -RedAmbassador = null -SteelAmbassador = null -AgniDemon = null -AqueosDemon = null -Palan = null -ShieldOfHeaven = null -GoldSproingy = null +Sproingy = 0.5 +Michael = 0.5 +GoldSproingy = 0.05 +TrueRedAmbassador = 0.3 [node name="Floor03" type="Node" parent="MapOrder"] script = ExtResource("2_00xd7") FolderName = "Floor03" FloorOdds = Array[float]([1.0]) -Sproingy = 1.0 -Michael = null -FilthEater = null -Sara = null -Ballos = null -Chariot = null -Chinthe = null -GreenAmbassador = null -RedAmbassador = null -SteelAmbassador = null -AgniDemon = null -AqueosDemon = null -Palan = null -ShieldOfHeaven = null -GoldSproingy = null +Sproingy = 0.25 +Michael = 0.5 +FilthEater = 0.5 +TrueRedAmbassador = 0.3 [node name="Floor04" type="Node" parent="MapOrder"] script = ExtResource("2_00xd7") FolderName = "Floor04" FloorOdds = Array[float]([1.0]) Sproingy = 1.0 -Michael = null -FilthEater = null -Sara = null -Ballos = null -Chariot = null -Chinthe = null -GreenAmbassador = null -RedAmbassador = null -SteelAmbassador = null -AgniDemon = null -AqueosDemon = null -Palan = null -ShieldOfHeaven = null -GoldSproingy = null [node name="Floor05" type="Node" parent="MapOrder"] script = ExtResource("2_00xd7") FolderName = "Floor05" FloorOdds = Array[float]([1.0]) Sproingy = 1.0 -Michael = null -FilthEater = null -Sara = null -Ballos = null -Chariot = null -Chinthe = null -GreenAmbassador = null -RedAmbassador = null -SteelAmbassador = null -AgniDemon = null -AqueosDemon = null -Palan = null -ShieldOfHeaven = null -GoldSproingy = null [node name="Floor06" type="Node" parent="MapOrder"] script = ExtResource("2_00xd7") FolderName = "Floor06" FloorOdds = Array[float]([0.2, 0.8, 0.5, 0.1]) Sproingy = 1.0 -Michael = null -FilthEater = null -Sara = null -Ballos = null -Chariot = null -Chinthe = null -GreenAmbassador = null -RedAmbassador = null -SteelAmbassador = null -AgniDemon = null -AqueosDemon = null -Palan = null -ShieldOfHeaven = null -GoldSproingy = null [node name="Floor07" type="Node" parent="MapOrder"] script = ExtResource("2_00xd7") FolderName = "Floor07" FloorOdds = Array[float]([1.0]) Sproingy = 1.0 -Michael = null -FilthEater = null -Sara = null -Ballos = null -Chariot = null -Chinthe = null -GreenAmbassador = null -RedAmbassador = null -SteelAmbassador = null -AgniDemon = null -AqueosDemon = null -Palan = null -ShieldOfHeaven = null -GoldSproingy = null [node name="Boss Floor 1" type="Node" parent="MapOrder"] script = ExtResource("3_v14r0") @@ -232,120 +141,36 @@ script = ExtResource("2_00xd7") FolderName = "Floor09" FloorOdds = Array[float]([1.0]) Sproingy = 1.0 -Michael = null -FilthEater = null -Sara = null -Ballos = null -Chariot = null -Chinthe = null -GreenAmbassador = null -RedAmbassador = null -SteelAmbassador = null -AgniDemon = null -AqueosDemon = null -Palan = null -ShieldOfHeaven = null -GoldSproingy = null [node name="Floor11" type="Node" parent="MapOrder"] script = ExtResource("2_00xd7") FolderName = "Floor11" FloorOdds = Array[float]([1.0]) Sproingy = 1.0 -Michael = null -FilthEater = null -Sara = null -Ballos = null -Chariot = null -Chinthe = null -GreenAmbassador = null -RedAmbassador = null -SteelAmbassador = null -AgniDemon = null -AqueosDemon = null -Palan = null -ShieldOfHeaven = null -GoldSproingy = null [node name="Floor12" type="Node" parent="MapOrder"] script = ExtResource("2_00xd7") FolderName = "Floor12" FloorOdds = Array[float]([1.0]) Sproingy = 1.0 -Michael = null -FilthEater = null -Sara = null -Ballos = null -Chariot = null -Chinthe = null -GreenAmbassador = null -RedAmbassador = null -SteelAmbassador = null -AgniDemon = null -AqueosDemon = null -Palan = null -ShieldOfHeaven = null -GoldSproingy = null [node name="Floor13" type="Node" parent="MapOrder"] script = ExtResource("2_00xd7") FolderName = "Floor13" FloorOdds = Array[float]([1.0]) Sproingy = 1.0 -Michael = null -FilthEater = null -Sara = null -Ballos = null -Chariot = null -Chinthe = null -GreenAmbassador = null -RedAmbassador = null -SteelAmbassador = null -AgniDemon = null -AqueosDemon = null -Palan = null -ShieldOfHeaven = null -GoldSproingy = null [node name="Floor14" type="Node" parent="MapOrder"] script = ExtResource("2_00xd7") FolderName = "Floor14" FloorOdds = Array[float]([1.0]) Sproingy = 1.0 -Michael = null -FilthEater = null -Sara = null -Ballos = null -Chariot = null -Chinthe = null -GreenAmbassador = null -RedAmbassador = null -SteelAmbassador = null -AgniDemon = null -AqueosDemon = null -Palan = null -ShieldOfHeaven = null -GoldSproingy = null [node name="Floor15" type="Node" parent="MapOrder"] script = ExtResource("2_00xd7") FolderName = "Floor15" FloorOdds = Array[float]([1.0]) Sproingy = 1.0 -Michael = null -FilthEater = null -Sara = null -Ballos = null -Chariot = null -Chinthe = null -GreenAmbassador = null -RedAmbassador = null -SteelAmbassador = null -AgniDemon = null -AqueosDemon = null -Palan = null -ShieldOfHeaven = null -GoldSproingy = null [node name="Boss Floor 2" type="Node" parent="MapOrder"] script = ExtResource("3_v14r0") diff --git a/Zennysoft.Game.Ma/src/map/dungeon/code/DungeonRoom.cs b/Zennysoft.Game.Ma/src/map/dungeon/code/DungeonRoom.cs index 3e3e975ff..51262e5e5 100644 --- a/Zennysoft.Game.Ma/src/map/dungeon/code/DungeonRoom.cs +++ b/Zennysoft.Game.Ma/src/map/dungeon/code/DungeonRoom.cs @@ -28,47 +28,47 @@ public abstract partial class DungeonRoom : Node3D, IDungeonRoom public void Setup() { - _enemiesInRoom = []; - if (_room != null) - { - _room.BodyEntered += Room_BodyEntered; - _room.BodyExited += Room_BodyExited; - } + _enemiesInRoom = []; + if (_room != null) + { + _room.BodyEntered += Room_BodyEntered; + _room.BodyExited += Room_BodyExited; + } } private void Room_BodyExited(Node3D body) { - if (body is IEnemy enemy) - _enemiesInRoom = _enemiesInRoom.Remove(enemy); - if (body is IPlayer) - _isPlayerInRoom = false; + if (body is IEnemy enemy) + _enemiesInRoom = _enemiesInRoom.Remove(enemy); + if (body is IPlayer) + _isPlayerInRoom = false; } private void Room_BodyEntered(Node3D body) { - if (body is IEnemy enemy) - _enemiesInRoom = _enemiesInRoom.Add(enemy); - if (body is IPlayer) - if (_playerDiscoveredRoom) - _isPlayerInRoom = true; - else - OnPlayerDiscoveringRoom(); + if (body is IEnemy enemy) + _enemiesInRoom = _enemiesInRoom.Add(enemy); + if (body is IPlayer) + if (_playerDiscoveredRoom) + _isPlayerInRoom = true; + else + OnPlayerDiscoveringRoom(); } public ImmutableList GetEnemiesInCurrentRoom() { - return _enemiesInRoom; + return _enemiesInRoom; } private void OnPlayerDiscoveringRoom() { - _isPlayerInRoom = true; - _playerDiscoveredRoom = true; - MinimapShadow.Hide(); + _isPlayerInRoom = true; + _playerDiscoveredRoom = true; + MinimapShadow.Hide(); } public void OnExitTree() { - _room.BodyEntered -= Room_BodyEntered; - _room.BodyExited -= Room_BodyExited; + _room.BodyEntered -= Room_BodyEntered; + _room.BodyExited -= Room_BodyExited; } -} +} \ No newline at end of file diff --git a/Zennysoft.Game.Ma/src/map/dungeon/code/JumpScareRoom.cs b/Zennysoft.Game.Ma/src/map/dungeon/code/JumpScareRoom.cs new file mode 100644 index 000000000..fc569b62c --- /dev/null +++ b/Zennysoft.Game.Ma/src/map/dungeon/code/JumpScareRoom.cs @@ -0,0 +1,31 @@ +using Chickensoft.AutoInject; +using Chickensoft.Introspection; +using Godot; +using Zennysoft.Ma.Adapter; + +namespace Zennysoft.Game.Ma; + +[Meta(typeof(IAutoNode))] +public partial class JumpScareRoom : DungeonRoom +{ + public override void _Notification(int what) => this.Notify(what); + + [Dependency] + public IPlayer Player => this.DependOn(); + + [Node] public Area3D JumpScare { get; set; } + + [Export] public Resource Dialogue { get; set; } = default!; + + public void OnResolved() + { + JumpScare.AreaEntered += JumpScare_AreaEntered; + } + + private void JumpScare_AreaEntered(Area3D area) + { + Player.PlayJumpScareAnimation(); + DialogueController.ShowDialogue(Dialogue, "general"); + JumpScare.SetMonitoring(false); + } +} diff --git a/Zennysoft.Game.Ma/src/map/dungeon/code/JumpScareRoom.cs.uid b/Zennysoft.Game.Ma/src/map/dungeon/code/JumpScareRoom.cs.uid new file mode 100644 index 000000000..8945e73e6 --- /dev/null +++ b/Zennysoft.Game.Ma/src/map/dungeon/code/JumpScareRoom.cs.uid @@ -0,0 +1 @@ +uid://cwqgealqc3w4 diff --git a/Zennysoft.Game.Ma/src/map/dungeon/code/MonsterRoom.cs b/Zennysoft.Game.Ma/src/map/dungeon/code/MonsterRoom.cs index a0a4d86f0..27fd73e53 100644 --- a/Zennysoft.Game.Ma/src/map/dungeon/code/MonsterRoom.cs +++ b/Zennysoft.Game.Ma/src/map/dungeon/code/MonsterRoom.cs @@ -19,57 +19,54 @@ public partial class MonsterRoom : DungeonRoom public override void _Ready() { - SpawnItems(); + SpawnItems(); } public void SpawnEnemies(Godot.Collections.Dictionary enemyInfo) { - if (enemyInfo == null || !enemyInfo.Any(x => x.Value > 0)) - return; + if (enemyInfo == null || !enemyInfo.Any(x => x.Value > 0)) + return; - var rng = new RandomNumberGenerator(); - rng.Randomize(); - var enemySpawnPoints = EnemySpawnPoints.GetChildren(); - var numberOfEnemiesToSpawn = rng.RandiRange(1, enemySpawnPoints.Count); + var rng = new RandomNumberGenerator(); + rng.Randomize(); + var enemySpawnPoints = EnemySpawnPoints.GetChildren(); + var numberOfEnemiesToSpawn = rng.RandiRange(1, enemySpawnPoints.Count); - foreach (var spawnPoint in enemySpawnPoints.Cast()) - { - if (numberOfEnemiesToSpawn <= 0) - break; - numberOfEnemiesToSpawn--; + foreach (var spawnPoint in enemySpawnPoints.Cast()) + { + if (numberOfEnemiesToSpawn <= 0) + break; + numberOfEnemiesToSpawn--; - var index = rng.RandWeighted([.. enemyInfo.Values]); - var selectedEnemy = enemyInfo.ElementAt((int)index); - var instantiatedEnemy = EnemyTypeToEnemyConverter.Convert(selectedEnemy.Key); - instantiatedEnemy.Position = new Vector3(spawnPoint.Position.X, 0f, spawnPoint.Position.Z); - AddChild(instantiatedEnemy); - } + var index = rng.RandWeighted([.. enemyInfo.Values]); + var selectedEnemy = enemyInfo.ElementAt((int)index); + var instantiatedEnemy = EnemyTypeToEnemyConverter.Convert(selectedEnemy.Key); + instantiatedEnemy.Position = new Vector3(spawnPoint.Position.X, 0f, spawnPoint.Position.Z); + AddChild(instantiatedEnemy); + } } - - // RegularFlame.GetChildren(); - // private void SpawnItems() { - if (ItemSpawnPoints == null) - return; + if (ItemSpawnPoints == null) + return; - var itemSpawnPoints = ItemSpawnPoints.GetChildren(); - var rng = new RandomNumberGenerator(); - rng.Randomize(); - var numberOfItemsToSpawn = rng.RandiRange(1, itemSpawnPoints.Count); - itemSpawnPoints.Shuffle(); - var database = ItemDatabase.Instance; - foreach (var spawnPoint in itemSpawnPoints.Cast()) - { - if (numberOfItemsToSpawn <= 0) - break; - numberOfItemsToSpawn--; + var itemSpawnPoints = ItemSpawnPoints.GetChildren(); + var rng = new RandomNumberGenerator(); + rng.Randomize(); + var numberOfItemsToSpawn = rng.RandiRange(1, itemSpawnPoints.Count); + itemSpawnPoints.Shuffle(); + var database = ItemDatabase.Instance; + foreach (var spawnPoint in itemSpawnPoints.Cast()) + { + if (numberOfItemsToSpawn <= 0) + break; + numberOfItemsToSpawn--; - var selectedItem = database.PickItem(); - var duplicated = selectedItem.Duplicate((int)DuplicateFlags.UseInstantiation) as Node3D; - duplicated.Position = new Vector3(spawnPoint.Position.X, 0, spawnPoint.Position.Z); - AddChild(duplicated); - } + var selectedItem = database.PickItem(); + var duplicated = selectedItem.Duplicate((int)DuplicateFlags.UseInstantiation) as Node3D; + duplicated.Position = new Vector3(spawnPoint.Position.X, 0, spawnPoint.Position.Z); + AddChild(duplicated); + } } } diff --git a/Zennysoft.Game.Ma/src/map/dungeon/floors/Floor01/Floor 1A.tscn b/Zennysoft.Game.Ma/src/map/dungeon/floors/Floor01/Floor 1A.tscn index 20448b8bf..f77f2de76 100644 --- a/Zennysoft.Game.Ma/src/map/dungeon/floors/Floor01/Floor 1A.tscn +++ b/Zennysoft.Game.Ma/src/map/dungeon/floors/Floor01/Floor 1A.tscn @@ -15,8 +15,8 @@ [ext_resource type="PackedScene" uid="uid://cxwyge2s1yswu" path="res://src/map/Placeables/A1-Socket.tscn" id="13_buew1"] [sub_resource type="NavigationMesh" id="NavigationMesh_csng8"] -vertices = PackedVector3Array(-145.5, -0.5, -14.25, -130.5, -0.5, -14.25, -130.25, -0.5, -16.5, -145.5, -0.5, -59.5, 34.25, -0.5, -16.5, 34.5, -0.5, -14.25, 53.5, -0.5, -14.25, 53.5, -0.5, -59.5, -129.5, 0.5, 45, -83, 0.5, 45, -83, 0.5, 43, -81.25, 0.5, 42.75, -81.5, 0.5, -15.5, -129.5, 0.5, -15.5, -47, 0.5, 42.75, -46.75, 0.5, -15.5, -45.25, 0.5, 47.25, -38.75, 0.5, 47.25, -38.75, 0.5, 43.5, -45.25, 0.5, 43, -37, 0.5, 43.25, -37.25, 0.5, -15.5, -17.75, 0.5, 43.25, -17.5, 0.5, 47.25, -14.5, 0.5, 47.25, -14.5, 0.5, 35.5, -12.75, 0.5, 35.25, -13, 0.5, -15.5, -2.5, 0.5, 35.25, -2.5, 0.5, 31.5, -1.5, 0.5, 31.25, -1, 0.5, -15.5, 14.75, 0.5, 31.75, 14.75, 0.5, 33.25, 33.5, 0.5, 33, 14.25, 0.5, 31.25, 33.5, 0.5, -15.5, -128.25, -0.5, 139.5, -128.25, -0.5, 132.5, -130.5, -0.5, 132.25, -145.5, -0.5, 139.5, 34.5, -0.5, 132.25, 32.25, -0.5, 132.5, 32.25, -0.5, 139.5, 53.5, -0.5, 139.5, 12.75, 7.75, 33, 12.75, 8, 32.25, 11.5, 8, 32.25, 11.5, 7.75, 33, 11, 7.75, 33.25, 11.25, 7.75, 35, 12.25, 7.75, 35.25, 13.75, 8, 34.25, -1, 7.75, 33.5, -1.5, 8, 33.5, -1.5, 8, 34.5, -0.25, 7.75, 35.25, 0.75, 7.75, 35, 1.25, 7.75, 34.25, 0.5, 8, 32.5, -0.5, 8, 32.5, 0.75, 0.5, 36.25, -1, 0.5, 36.25, -1.75, 0.5, 37, -1.75, 0.5, 39, -0.5, 0.5, 40, 13, 0.5, 47.75, 13.75, 0.5, 47, 13.75, 0.5, 45, 12.5, 0.5, 44, 10.75, 0.5, 48, -0.5, 0.5, 41.25, -1, 0.5, 41.5, -1, 0.5, 48, 1.25, 0.5, 48, 2.25, 0.5, 49, 10, 0.5, 48.75, 12.5, 0.5, 42.75, 9.75, 0.5, 34.5, 2, 0.5, 35.25, 13.25, 0.5, 42.25, 10.75, 0.5, 36, 10, 0.5, 33, 2, 0.5, 33, 2.25, 0.5, 51, 10, 0.5, 51, 13.25, 0.5, 36, 22.75, 0.5, 43.75, 22.75, 0.5, 45.25, 33.5, 0.5, 45, 22.25, 0.5, 43.25, 14.75, 0.5, 43.25, -13, 0.5, 39.5, -11, 0.5, 39.5, -10.75, 0.5, 39, -13.25, 0.75, 36.75, -13, 0.5, 48.75, -18, 0.5, 49, -18, 0.5, 51, -10.75, 0.5, 51.25, -2.5, 0.5, 50.5, -2.5, 0.5, 40.75, -9.25, 0.5, 40.75, -9.25, 0.5, 50.75, -101.75, 8.75, 44, -101.75, 8.75, 56.25, -82.75, 8.75, 56.25, -82.75, 8.75, 44, -81.75, 0.5, 44.5, -81.75, 0.5, 45, -64.75, 0.5, 45, -64.75, 0.5, 44.5, -81.75, 4.75, 45, -64.75, 4.75, 45.25, -64.75, 4.75, 44.5, -81.75, 4.75, 44.5, -62.75, 4.75, 46, -63.5, 4.75, 44.5, -63.75, 4.75, 46.5, -63.75, 4.75, 53.5, -63.5, 4.75, 55.25, -62.75, 4.75, 54.25, -61, 4.75, 46, -61, 4.75, 54.25, -69.25, 5.25, 46.5, -69.25, 5.25, 53.5, -67.875, 4.75, 46.5, -67.875, 4.75, 53.5, -60.5, 4.75, 55.75, -58, 4.75, 55.75, -58, 4.75, 44.5, -60.5, 4.75, 44.5, -60.5, 0.75, 54.25, -60.5, 0.5, 55.75, -58.25, 0.5, 55.75, -58.25, 0.5, 44.5, -60.5, 0.5, 44.5, -60.5, 0.75, 46, -63, 2, 46, -63, 2, 54.25, -47.25, 0.5, 46.5, -46.5, 0.5, 46, -46.5, 0.5, 44.5, -53.75, 0.5, 45, -54, 0.5, 44.5, -57, 0.5, 44.5, -57, 0.5, 55.75, -54, 0.5, 55.75, -53.75, 0.5, 55, -49.75, 0.5, 55, -49.25, 0.5, 55.75, -46.5, 0.5, 55.75, -47.25, 0.5, 51.75, -46.25, 0.5, 51, -46.75, 0.5, 48.75, -37.75, 0.5, 51, -37.75, 0.5, 49, -47.25, 0.5, 48.25, -37.5, 7.5, 44.5, -37.5, 7.5, 45, -36, 7.5, 45, -36, 7.5, 44.5, 19, 0.5, 47.25, 21, 0.5, 44.75, 18.75, 0.5, 58.5, 21.25, 0.5, 58.5, -129.5, 0.5, 55.5, -83, 0.5, 55.5, 31.25, 0.5, 68.5, 30.5, 0.5, 68.75, 30.5, 0.5, 70.5, 33.5, 0.5, 70.5, 26.5, 0.5, 55.5, 30.75, 0.5, 59.5, 26.5, 0.5, 59.25, 22.75, 0.5, 55.25, -33.5, 0.5, 47.25, -34.5, 0.5, 47.75, -34.75, 0.5, 48.75, -19, 0.5, 51.25, -36.75, 0.5, 48, -36.5, 0.5, 52, -30, 0.5, 58.5, -29, 0.5, 59.75, -27, 0.5, 59.75, -26, 0.5, 58.5, -19.5, 0.5, 52, -20.5, 0.5, 48, -22.25, 0.5, 48.5, -22.5, 0.5, 45.25, -36.25, 0.5, 57.5, -35.5, 0.5, 58.75, -33.25, 0.5, 45.25, -20.5, 0.5, 58.25, -19.25, 0.5, 57.5, -36.75, 0.5, 57.5, -20.5, 0.5, 58.75, -96.5, 19.75, 46.5, -98.25, 20.5, 46.5, -98.25, 20.5, 47.25, -98.5, 20.5, 52.75, -98.25, 20.5, 53.5, -96.5, 19.75, 53.5, -99, 20.75, 47.5, -99, 20.75, 52.75, -95.5, 19, 46.5, -95.5, 19, 53.5, -93.25, 18, 53.5, -93.25, 18, 46.5, -92.25, 17.25, 46.5, -92.25, 17.25, 53.5, -89.75, 16, 53.5, -89.75, 16, 46.5, -88.75, 15.5, 46.5, -88.75, 15.5, 53.5, -86.5, 14.5, 53.5, -86.5, 14.5, 46.5, -85.5, 13.75, 46.5, -85.5, 13.75, 53.5, -83.75, 13, 53.5, -83.75, 13, 46.5, -82.75, 12.25, 46.5, -82.75, 12.25, 53.5, -80.25, 11.25, 53.5, -80.25, 11.25, 46.5, -81.5, 0.5, 46.5, -81.5, 0.5, 53.5, -64.25, 0.5, 53.5, -64.25, 0.5, 46.5, -81.5, 4.75, 46.5, -81.5, 4.75, 53.5, -72, 4.75, 53.5, -72, 4.75, 46.5, -79.25, 10.5, 46.5, -79.25, 10.5, 53.5, -77, 9.5, 53.5, -77, 9.5, 46.5, -76, 8.75, 46.5, -76, 8.75, 53.5, -73.5, 7.75, 53.5, -73.5, 7.75, 46.5, -72.5, 7, 46.5, -72.5, 7, 53.5, -70.25, 6, 53.5, -70.25, 6, 46.5, -64.75, 3, 46.5, -64.75, 3, 53.5, -64, 2.75, 53.5, -64, 2.75, 46.5, 13, 7.75, 50.5, 13.75, 8, 50.25, 13.75, 8, 49.75, 11.5, 8, 51.5, 12.75, 8, 51.5, 12.25, 7.75, 48.75, 11, 7.75, 49.25, 11, 7.75, 50.75, 17.25, 0.5, 48.75, 14.75, 0.5, 48.75, 14.5, 0.5, 52.5, 17.25, 0.5, 55.25, -0.5, 0.5, 63.25, 9.25, 0.5, 63.25, 9.25, 0.5, 59.5, 13.5, 0.5, 55.25, 13.25, 0.5, 59.25, -0.5, 0.5, 52.5, -1.5, 8, 49.5, -1.5, 8, 50.5, -1, 7.75, 50.5, -0.75, 7.75, 49, -0.5, 8, 51.5, 0.75, 8, 51.5, 1.25, 7.75, 50.5, 0.75, 7.75, 49, -2.5, 0.5, 52.25, -9.25, 0.5, 52.25, -2.25, 0.5, 63.25, -17.25, 0.5, 73.25, -17.75, 0.5, 73.5, -17.25, 0.5, 74, -2.75, 0.5, 75.25, -17.5, 0.5, 60.25, -19.5, 0.5, 60.5, -19.25, 0.5, 67.25, -17.25, 0.5, 67.5, -17.25, 0.5, 75.25, -9.5, 0.5, 52.75, -17.5, 0.5, 52.75, -2.75, 0.5, 63.75, -34, 0.5, 84, -34.25, 0.5, 82.25, -35.5, 0.5, 82, -32, 0.5, 131.5, -34.25, 0.5, 67.75, -30.75, 0.5, 67.25, -30.75, 0.5, 60.5, -38.5, 0.5, 60.5, -38.75, 0.5, 52.75, -45.25, 0.5, 52.75, -45.5, 0.5, 57.5, -32, 0.5, 84, -35.5, 0.5, 78.5, -34.25, 0.5, 78.25, -81.25, 0.5, 57.75, -81.5, 0.5, 131.5, -64.75, 4.75, 54.75, -68.75, 5, 54.75, -68.75, 4.75, 55.25, -64.75, 4.75, 55.75, -81.75, 4.75, 55.75, -81.75, 4.75, 55.25, -83, 0.5, 57.5, -129.5, 0.5, 131.5, -81.75, 0.5, 55.25, -81.75, 0.5, 55.75, -64.75, 0.5, 55.75, -64.75, 0.5, 55.25, 14.25, 4.25, 56.25, 14.25, 4.25, 59.25, 25.5, 4.25, 59.25, 25.5, 4.25, 56.25, 14.5, 0.5, 56.5, 14.5, 0.5, 59.25, 17.25, 0.5, 59.25, 17.25, 0.5, 56.5, 22.5, 0.5, 56.5, 22.5, 0.5, 59.25, 25.25, 0.5, 59.25, 25.25, 0.5, 56.5, 21.25, 0.5, 71.5, 23.25, 0.5, 71.25, 23.25, 0.5, 69.5, 18.75, 0.5, 71.5, 25.25, 0.5, 69.25, 25.5, 0.5, 67.25, 25.5, 0.5, 64.5, 14.5, 0.5, 64.5, 12.25, 0.5, 64.75, 12.25, 0.5, 67.25, 14.5, 0.5, 67.5, 14.5, 0.5, 71.25, 21.5, 0.5, 60.75, 18.5, 0.5, 60.75, 25.25, 0.5, 60.75, 18.75, 0.5, 75, 21.25, 0.5, 75, 29, 0.5, 67.25, 29, 0.5, 64.5, 14.5, 0.5, 60.75, -37.5, 7.5, 58.5, -37.5, 7.5, 59.25, -36.75, 7.5, 59.25, -36.75, 7.25, 58.5, -29.75, 0.5, 69.25, -31.25, 0.5, 69.25, -31.5, 0.5, 70.25, -23.5, 0.5, 73, -23.5, 0.5, 69, -26, 0.5, 69.25, -30.75, 0.5, 78.25, -30.5, 0.5, 80.75, -26.75, 0.5, 81, -27, 0.5, 68.25, -33, 0.5, 70.25, -33, 0.5, 78.25, -29, 0.5, 68.25, 13.25, 4.25, 60.25, 10.25, 4.25, 60.25, 10, 4.5, 64, 10.5, 4.25, 71.75, 13.25, 4.25, 71.75, 14.25, 8.25, 65.75, 17.25, 8.25, 65.75, 17.5, 8.25, 63.25, 14.25, 8.25, 60.25, 22.25, 8.25, 63.25, 22.5, 8.25, 65.75, 25.5, 8.25, 65.75, 25.5, 8.25, 60.25, 25.5, 4.25, 72.5, 25.75, 4.25, 74, 26, 4.25, 73.5, 26.5, 4.25, 72.25, 28, 4.25, 71.75, 29.5, 4.5, 68, 29.75, 4.25, 60.25, 26.5, 4.25, 60.25, 27.75, 4.25, 73.5, 30.25, 4.5, 67.75, 29.5, 4.25, 71.75, -25.25, 0.5, 60.5, -25.25, 0.5, 67.25, 10.5, 0.5, 60.5, 10.5, 0.5, 63.25, 13.25, 0.5, 63.25, 13.25, 0.5, 60.5, 26.5, 0.5, 60.5, 26.5, 0.5, 63.25, 29.5, 0.5, 63.25, 29.5, 0.5, 60.5, 24.5, 6.25, 62.25, 24.5, 6.25, 63.5, 25.25, 6.25, 63.5, 25.25, 6.25, 62.25, -1, 0.5, 76.75, -1.5, 0.5, 77, -1.5, 0.5, 79, 1.25, 0.5, 79, 1.25, 0.5, 67, -1.25, 0.5, 65, 22.25, 8.25, 68.5, 25.5, 8.25, 71.5, 17.5, 8.25, 68.5, 14.25, 8.25, 71.5, -33, 8.25, 68.25, -33, 8.25, 69.25, -32.25, 8.25, 69.25, -32.25, 8.25, 68.25, -22.5, 8.75, 68.25, -22.5, 8.75, 72.5, -18.25, 8.75, 72.5, -18.25, 8.75, 68.25, 10.75, 0.5, 68.5, 10.75, 0.5, 71.5, 13.25, 0.5, 71.5, 13.25, 0.5, 68.5, 28.75, 0.5, 69.5, 28.75, 0.5, 71.5, 29.25, 0.5, 71.5, 29.25, 0.5, 68.5, 26.5, 0.5, 68.5, 26.5, 0.5, 69.25, 30.5, 0.5, 72.5, 28.75, 0.5, 72.75, 28.5, 0.5, 74.5, 26.75, 0.5, 74.5, 26.5, 0.5, 76.75, 17.5, 0.5, 77.25, 17.25, 0.5, 76.75, 13.25, 0.5, 76.5, 2.75, 0.5, 80.25, 2.25, 0.5, 80.75, 13.25, 0.5, 72.75, 9.5, 0.5, 72.5, 33.5, 0.5, 131.5, 9.5, 0.5, 68.75, 2.75, 0.5, 68.75, 1, 0.5, 131.5, 0.75, 0.5, 80.75, 24.25, 4.25, 70.25, 24.25, 4.25, 71.25, 25.25, 4.25, 71.25, 25.25, 4.25, 70.25, 14.5, 6.25, 70.5, 14.5, 6.25, 71.25, 15.25, 6.25, 71.25, 15.25, 6.25, 70.5, 24.5, 0.5, 70.5, 24.5, 0.5, 71.25, 25.25, 0.5, 71.25, 25.25, 0.5, 70.5, 24.5, 2.25, 70.5, 24.5, 2.25, 71.25, 25.25, 2.25, 71.25, 25.25, 2.25, 70.5, 26.5, 0.5, 70.5, 26.5, 0.5, 71.5, 27.5, 0.5, 71.5, 27.5, 0.5, 70.5, 25.75, 4.25, 75.75, 14.25, 4.25, 72.5, 18, 4.5, 75.75, 14.25, 4.25, 75.75, 18.25, 4.5, 76.25, 14.5, 0.5, 72.5, 14.5, 0.5, 75.5, 17.25, 0.5, 75.5, 17.25, 0.5, 72.5, 23.25, 0.5, 74.25, 23.25, 0.5, 72.5, 22.5, 0.5, 72.5, 22.5, 0.5, 75.25, 25.5, 0.5, 75.5, 25.5, 0.5, 74.5, 24.5, 0.5, 72.5, 24.5, 0.5, 73.25, 25.5, 0.5, 73.25, 25.5, 0.5, 72.5, 26.75, 0.5, 72.75, 26.75, 0.5, 73.25, 27.5, 0.5, 73.25, 27.5, 0.5, 72.75, -25.5, 0.5, 82.75, -25.25, 0.5, 83.25, -24.5, 0.5, 82.75, -26.75, 0.5, 82.75, -19.25, 0.5, 79.75, -18, 0.5, 79, -18, 0.5, 77, -19.25, 0.5, 76, -23.25, 0.5, 73.5, -19, 0.5, 73.5, -19, 0.5, 82.75, -34.5, 8.75, 79.25, -34.5, 8.75, 81.25, -31.5, 8.75, 81.25, -31.5, 8.75, 79.25, -32.75, 2.5, 79.5, -32.75, 2.5, 80.75, -31.75, 2.5, 80.75, -31.75, 2.5, 79.5, -32.5, 0.5, 79.5, -32.5, 0.5, 80.25, -31.75, 0.5, 80.25, -31.75, 0.5, 79.5, -17.25, 0.5, 81.5, -17.75, 0.5, 81.75, -17.75, 0.5, 83.75, -17.25, 0.5, 80.75, -20, 0.5, 131.5, -20, 0.5, 84, -30.75, 8.75, 83.75, -27.5, 8.75, 83.75, -27.75, 8.75, 81.75, -30.75, 8.75, 81.75, -30.5, 0.5, 82, -30.5, 0.5, 82.75, -30, 0.5, 82.75, -30, 0.5, 82, -29.75, 2.5, 82, -29.75, 2.5, 82.75, -28, 2.5, 82.75, -28, 2.5, 82, -28.75, 0.5, 82, -28.75, 0.5, 82.75, -28, 0.5, 82.75, -28, 0.5, 82, -33, 4.5, 82.25, -33, 4.5, 83, -31.75, 4.5, 83, -31.75, 4.5, 82.25, -26.25, 0.5, 84.5, -26.75, 0.5, 84, -27, 0.5, 84.75, -31.5, 0.5, 84.75) -polygons = [PackedInt32Array(1, 0, 2), PackedInt32Array(2, 0, 3), PackedInt32Array(5, 4, 6), PackedInt32Array(6, 4, 7), PackedInt32Array(2, 3, 4), PackedInt32Array(4, 3, 7), PackedInt32Array(10, 9, 8), PackedInt32Array(10, 8, 11), PackedInt32Array(11, 8, 12), PackedInt32Array(12, 8, 13), PackedInt32Array(11, 12, 14), PackedInt32Array(14, 12, 15), PackedInt32Array(17, 16, 18), PackedInt32Array(18, 16, 19), PackedInt32Array(18, 19, 20), PackedInt32Array(20, 19, 14), PackedInt32Array(20, 14, 15), PackedInt32Array(20, 15, 21), PackedInt32Array(23, 22, 24), PackedInt32Array(24, 22, 25), PackedInt32Array(27, 26, 25), PackedInt32Array(22, 20, 25), PackedInt32Array(25, 20, 27), PackedInt32Array(27, 20, 21), PackedInt32Array(29, 28, 26), PackedInt32Array(31, 30, 29), PackedInt32Array(31, 29, 27), PackedInt32Array(27, 29, 26), PackedInt32Array(34, 33, 32), PackedInt32Array(32, 35, 34), PackedInt32Array(34, 35, 36), PackedInt32Array(36, 35, 31), PackedInt32Array(35, 30, 31), PackedInt32Array(38, 37, 39), PackedInt32Array(39, 37, 40), PackedInt32Array(1, 39, 0), PackedInt32Array(0, 39, 40), PackedInt32Array(42, 41, 43), PackedInt32Array(43, 41, 44), PackedInt32Array(5, 6, 41), PackedInt32Array(41, 6, 44), PackedInt32Array(48, 47, 45), PackedInt32Array(45, 47, 46), PackedInt32Array(48, 45, 49), PackedInt32Array(49, 45, 50), PackedInt32Array(50, 45, 51), PackedInt32Array(51, 45, 52), PackedInt32Array(55, 54, 53), PackedInt32Array(57, 56, 58), PackedInt32Array(58, 56, 55), PackedInt32Array(58, 55, 53), PackedInt32Array(58, 53, 59), PackedInt32Array(60, 59, 53), PackedInt32Array(62, 61, 63), PackedInt32Array(63, 61, 64), PackedInt32Array(64, 61, 65), PackedInt32Array(67, 66, 68), PackedInt32Array(68, 66, 69), PackedInt32Array(69, 66, 70), PackedInt32Array(72, 71, 73), PackedInt32Array(73, 71, 74), PackedInt32Array(76, 75, 77), PackedInt32Array(77, 75, 71), PackedInt32Array(77, 71, 79), PackedInt32Array(77, 79, 78), PackedInt32Array(80, 77, 81), PackedInt32Array(81, 77, 78), PackedInt32Array(82, 78, 83), PackedInt32Array(83, 78, 79), PackedInt32Array(65, 61, 71), PackedInt32Array(71, 61, 79), PackedInt32Array(70, 76, 69), PackedInt32Array(69, 76, 77), PackedInt32Array(84, 75, 85), PackedInt32Array(85, 75, 76), PackedInt32Array(75, 74, 71), PackedInt32Array(81, 86, 80), PackedInt32Array(89, 88, 87), PackedInt32Array(87, 90, 89), PackedInt32Array(89, 90, 34), PackedInt32Array(34, 90, 33), PackedInt32Array(90, 91, 33), PackedInt32Array(93, 92, 94), PackedInt32Array(94, 92, 95), PackedInt32Array(64, 94, 63), PackedInt32Array(63, 94, 95), PackedInt32Array(97, 96, 98), PackedInt32Array(98, 96, 99), PackedInt32Array(92, 93, 96), PackedInt32Array(96, 93, 99), PackedInt32Array(101, 100, 102), PackedInt32Array(102, 100, 103), PackedInt32Array(107, 106, 104), PackedInt32Array(104, 106, 105), PackedInt32Array(111, 110, 108), PackedInt32Array(108, 110, 109), PackedInt32Array(115, 114, 112), PackedInt32Array(112, 114, 113), PackedInt32Array(118, 117, 116), PackedInt32Array(121, 120, 119), PackedInt32Array(116, 122, 118), PackedInt32Array(118, 122, 119), PackedInt32Array(119, 122, 121), PackedInt32Array(121, 122, 123), PackedInt32Array(124, 126, 125), PackedInt32Array(125, 126, 127), PackedInt32Array(127, 126, 118), PackedInt32Array(127, 118, 119), PackedInt32Array(131, 130, 122), PackedInt32Array(122, 130, 123), PackedInt32Array(123, 130, 128), PackedInt32Array(128, 130, 129), PackedInt32Array(134, 133, 132), PackedInt32Array(137, 136, 135), PackedInt32Array(137, 132, 138), PackedInt32Array(138, 132, 139), PackedInt32Array(137, 135, 132), PackedInt32Array(132, 135, 134), PackedInt32Array(141, 140, 142), PackedInt32Array(142, 140, 143), PackedInt32Array(145, 144, 143), PackedInt32Array(146, 148, 147), PackedInt32Array(150, 149, 151), PackedInt32Array(151, 149, 152), PackedInt32Array(154, 153, 143), PackedInt32Array(143, 153, 145), PackedInt32Array(145, 153, 148), PackedInt32Array(145, 148, 146), PackedInt32Array(155, 153, 156), PackedInt32Array(156, 153, 154), PackedInt32Array(143, 140, 157), PackedInt32Array(152, 149, 148), PackedInt32Array(143, 157, 154), PackedInt32Array(153, 152, 148), PackedInt32Array(161, 160, 158), PackedInt32Array(158, 160, 159), PackedInt32Array(67, 68, 162), PackedInt32Array(162, 68, 163), PackedInt32Array(164, 162, 165), PackedInt32Array(165, 162, 163), PackedInt32Array(8, 9, 166), PackedInt32Array(166, 9, 167), PackedInt32Array(169, 168, 170), PackedInt32Array(170, 168, 171), PackedInt32Array(172, 88, 173), PackedInt32Array(173, 88, 89), PackedInt32Array(173, 174, 172), PackedInt32Array(172, 175, 88), PackedInt32Array(168, 173, 171), PackedInt32Array(171, 173, 89), PackedInt32Array(178, 177, 176), PackedInt32Array(97, 98, 179), PackedInt32Array(180, 178, 156), PackedInt32Array(156, 178, 155), PackedInt32Array(155, 178, 181), PackedInt32Array(181, 178, 176), PackedInt32Array(183, 182, 184), PackedInt32Array(184, 182, 185), PackedInt32Array(179, 186, 97), PackedInt32Array(97, 186, 187), PackedInt32Array(182, 181, 185), PackedInt32Array(185, 181, 176), PackedInt32Array(185, 176, 188), PackedInt32Array(188, 176, 189), PackedInt32Array(191, 190, 182), PackedInt32Array(182, 190, 181), PackedInt32Array(176, 192, 189), PackedInt32Array(187, 186, 188), PackedInt32Array(188, 186, 194), PackedInt32Array(188, 194, 193), PackedInt32Array(188, 193, 185), PackedInt32Array(190, 195, 181), PackedInt32Array(193, 196, 185), PackedInt32Array(199, 198, 197), PackedInt32Array(201, 200, 202), PackedInt32Array(202, 200, 199), PackedInt32Array(202, 199, 197), PackedInt32Array(204, 203, 200), PackedInt32Array(200, 203, 199), PackedInt32Array(208, 207, 205), PackedInt32Array(205, 207, 206), PackedInt32Array(212, 211, 209), PackedInt32Array(209, 211, 210), PackedInt32Array(216, 215, 213), PackedInt32Array(213, 215, 214), PackedInt32Array(220, 219, 217), PackedInt32Array(217, 219, 218), PackedInt32Array(224, 223, 221), PackedInt32Array(221, 223, 222), PackedInt32Array(228, 227, 225), PackedInt32Array(225, 227, 226), PackedInt32Array(232, 231, 229), PackedInt32Array(229, 231, 230), PackedInt32Array(236, 235, 233), PackedInt32Array(233, 235, 234), PackedInt32Array(240, 239, 237), PackedInt32Array(237, 239, 238), PackedInt32Array(244, 243, 241), PackedInt32Array(241, 243, 242), PackedInt32Array(248, 247, 245), PackedInt32Array(245, 247, 246), PackedInt32Array(251, 250, 249), PackedInt32Array(249, 253, 252), PackedInt32Array(256, 255, 252), PackedInt32Array(252, 255, 249), PackedInt32Array(249, 255, 254), PackedInt32Array(249, 254, 251), PackedInt32Array(258, 257, 259), PackedInt32Array(259, 257, 260), PackedInt32Array(263, 262, 261), PackedInt32Array(259, 260, 264), PackedInt32Array(264, 265, 263), PackedInt32Array(264, 263, 259), PackedInt32Array(259, 263, 266), PackedInt32Array(266, 263, 261), PackedInt32Array(268, 267, 269), PackedInt32Array(269, 267, 270), PackedInt32Array(271, 269, 272), PackedInt32Array(272, 269, 273), PackedInt32Array(273, 269, 274), PackedInt32Array(274, 269, 270), PackedInt32Array(276, 103, 275), PackedInt32Array(275, 103, 100), PackedInt32Array(275, 266, 276), PackedInt32Array(276, 266, 277), PackedInt32Array(277, 266, 261), PackedInt32Array(279, 278, 280), PackedInt32Array(280, 278, 281), PackedInt32Array(283, 282, 284), PackedInt32Array(284, 282, 285), PackedInt32Array(281, 286, 280), PackedInt32Array(277, 289, 287), PackedInt32Array(287, 289, 288), PackedInt32Array(288, 289, 282), PackedInt32Array(282, 289, 285), PackedInt32Array(287, 276, 277), PackedInt32Array(278, 285, 281), PackedInt32Array(281, 285, 289), PackedInt32Array(291, 290, 292), PackedInt32Array(292, 290, 293), PackedInt32Array(295, 294, 296), PackedInt32Array(296, 294, 297), PackedInt32Array(299, 298, 300), PackedInt32Array(300, 298, 297), PackedInt32Array(290, 301, 293), PackedInt32Array(300, 302, 292), PackedInt32Array(303, 302, 294), PackedInt32Array(294, 302, 297), PackedInt32Array(297, 302, 300), PackedInt32Array(300, 292, 304), PackedInt32Array(304, 292, 293), PackedInt32Array(304, 293, 305), PackedInt32Array(307, 306, 308), PackedInt32Array(308, 306, 309), PackedInt32Array(311, 308, 310), PackedInt32Array(310, 308, 309), PackedInt32Array(166, 167, 312), PackedInt32Array(312, 304, 166), PackedInt32Array(166, 304, 305), PackedInt32Array(166, 305, 313), PackedInt32Array(317, 316, 314), PackedInt32Array(314, 316, 315), PackedInt32Array(321, 320, 318), PackedInt32Array(318, 320, 319), PackedInt32Array(325, 324, 322), PackedInt32Array(322, 324, 323), PackedInt32Array(329, 328, 326), PackedInt32Array(326, 328, 327), PackedInt32Array(331, 330, 332), PackedInt32Array(332, 330, 333), PackedInt32Array(334, 332, 335), PackedInt32Array(335, 332, 336), PackedInt32Array(338, 337, 339), PackedInt32Array(339, 337, 340), PackedInt32Array(333, 341, 340), PackedInt32Array(165, 342, 164), PackedInt32Array(164, 342, 343), PackedInt32Array(342, 344, 336), PackedInt32Array(330, 346, 333), PackedInt32Array(333, 346, 345), PackedInt32Array(340, 337, 343), PackedInt32Array(336, 348, 335), PackedInt32Array(335, 348, 347), PackedInt32Array(342, 336, 343), PackedInt32Array(343, 336, 332), PackedInt32Array(343, 332, 333), PackedInt32Array(343, 333, 340), PackedInt32Array(337, 349, 343), PackedInt32Array(353, 352, 350), PackedInt32Array(350, 352, 351), PackedInt32Array(356, 355, 354), PackedInt32Array(359, 358, 357), PackedInt32Array(362, 361, 360), PackedInt32Array(359, 357, 363), PackedInt32Array(363, 357, 356), PackedInt32Array(356, 357, 360), PackedInt32Array(360, 357, 362), PackedInt32Array(364, 356, 365), PackedInt32Array(365, 356, 360), PackedInt32Array(356, 354, 363), PackedInt32Array(366, 183, 363), PackedInt32Array(363, 183, 184), PackedInt32Array(354, 366, 363), PackedInt32Array(368, 367, 369), PackedInt32Array(369, 367, 370), PackedInt32Array(370, 367, 371), PackedInt32Array(373, 372, 374), PackedInt32Array(374, 372, 375), PackedInt32Array(377, 376, 378), PackedInt32Array(378, 376, 379), PackedInt32Array(374, 375, 376), PackedInt32Array(376, 375, 379), PackedInt32Array(381, 380, 382), PackedInt32Array(382, 380, 383), PackedInt32Array(384, 383, 385), PackedInt32Array(385, 383, 386), PackedInt32Array(386, 383, 387), PackedInt32Array(382, 383, 388), PackedInt32Array(388, 383, 384), PackedInt32Array(386, 389, 385), PackedInt32Array(385, 390, 384), PackedInt32Array(391, 283, 392), PackedInt32Array(392, 283, 284), PackedInt32Array(396, 395, 393), PackedInt32Array(393, 395, 394), PackedInt32Array(400, 399, 397), PackedInt32Array(397, 399, 398), PackedInt32Array(404, 403, 401), PackedInt32Array(401, 403, 402), PackedInt32Array(406, 405, 407), PackedInt32Array(407, 405, 408), PackedInt32Array(339, 409, 338), PackedInt32Array(338, 409, 410), PackedInt32Array(410, 409, 405), PackedInt32Array(405, 409, 408), PackedInt32Array(377, 378, 411), PackedInt32Array(411, 378, 412), PackedInt32Array(373, 413, 372), PackedInt32Array(372, 413, 414), PackedInt32Array(411, 412, 413), PackedInt32Array(413, 412, 414), PackedInt32Array(418, 417, 415), PackedInt32Array(415, 417, 416), PackedInt32Array(422, 421, 419), PackedInt32Array(419, 421, 420), PackedInt32Array(426, 425, 423), PackedInt32Array(423, 425, 424), PackedInt32Array(428, 427, 429), PackedInt32Array(429, 427, 430), PackedInt32Array(432, 431, 427), PackedInt32Array(427, 431, 430), PackedInt32Array(435, 434, 433), PackedInt32Array(437, 436, 435), PackedInt32Array(433, 170, 171), PackedInt32Array(439, 438, 440), PackedInt32Array(440, 438, 441), PackedInt32Array(441, 438, 442), PackedInt32Array(444, 443, 440), PackedInt32Array(435, 433, 437), PackedInt32Array(437, 433, 171), PackedInt32Array(437, 171, 445), PackedInt32Array(447, 446, 444), PackedInt32Array(438, 437, 442), PackedInt32Array(442, 437, 448), PackedInt32Array(448, 437, 445), PackedInt32Array(444, 440, 447), PackedInt32Array(447, 440, 441), PackedInt32Array(448, 449, 442), PackedInt32Array(453, 452, 450), PackedInt32Array(450, 452, 451), PackedInt32Array(457, 456, 454), PackedInt32Array(454, 456, 455), PackedInt32Array(461, 460, 458), PackedInt32Array(458, 460, 459), PackedInt32Array(465, 464, 462), PackedInt32Array(462, 464, 463), PackedInt32Array(469, 468, 466), PackedInt32Array(466, 468, 467), PackedInt32Array(381, 470, 380), PackedInt32Array(380, 470, 472), PackedInt32Array(380, 472, 471), PackedInt32Array(472, 473, 471), PackedInt32Array(470, 474, 472), PackedInt32Array(478, 477, 475), PackedInt32Array(475, 477, 476), PackedInt32Array(480, 479, 481), PackedInt32Array(481, 479, 482), PackedInt32Array(484, 483, 479), PackedInt32Array(479, 483, 482), PackedInt32Array(488, 487, 485), PackedInt32Array(485, 487, 486), PackedInt32Array(492, 491, 489), PackedInt32Array(489, 491, 490), PackedInt32Array(495, 494, 493), PackedInt32Array(493, 496, 362), PackedInt32Array(495, 493, 362), PackedInt32Array(499, 498, 497), PackedInt32Array(499, 497, 500), PackedInt32Array(500, 497, 501), PackedInt32Array(501, 497, 495), PackedInt32Array(501, 495, 362), PackedInt32Array(501, 502, 500), PackedInt32Array(497, 503, 495), PackedInt32Array(357, 501, 362), PackedInt32Array(406, 407, 499), PackedInt32Array(499, 407, 498), PackedInt32Array(507, 506, 504), PackedInt32Array(504, 506, 505), PackedInt32Array(511, 510, 508), PackedInt32Array(508, 510, 509), PackedInt32Array(515, 514, 512), PackedInt32Array(512, 514, 513), PackedInt32Array(518, 517, 516), PackedInt32Array(516, 519, 449), PackedInt32Array(516, 449, 518), PackedInt32Array(518, 449, 448), PackedInt32Array(518, 448, 520), PackedInt32Array(520, 521, 518), PackedInt32Array(525, 524, 522), PackedInt32Array(522, 524, 523), PackedInt32Array(529, 528, 526), PackedInt32Array(526, 528, 527), PackedInt32Array(533, 532, 530), PackedInt32Array(530, 532, 531), PackedInt32Array(537, 536, 534), PackedInt32Array(534, 536, 535), PackedInt32Array(541, 540, 538), PackedInt32Array(538, 540, 539), PackedInt32Array(544, 543, 542), PackedInt32Array(542, 521, 544), PackedInt32Array(544, 521, 520), PackedInt32Array(544, 520, 293), PackedInt32Array(293, 301, 545), PackedInt32Array(293, 545, 544), PackedInt32Array(38, 42, 37), PackedInt32Array(37, 42, 43)] +vertices = PackedVector3Array(-145.5, 1.6236, 45, -83, 1.6236, 45, -83, 1.6236, 43, -81.25, 1.6236, 42.75, -81.5, 1.6236, -59.5, -145.5, 1.6236, -59.5, -47, 1.6236, 42.75, -46.75, 1.6236, -59.5, -45.25, 1.6236, 47.25, -38.75, 1.6236, 47.25, -38.75, 1.6236, 43.5, -45.25, 1.6236, 43, -37, 1.6236, 43.25, -37.25, 1.6236, -59.5, -17.75, 1.6236, 43.25, -17.5, 1.6236, 47.25, -14.5, 1.6236, 47.25, -14.5, 1.6236, 35.5, -12.75, 1.6236, 35.25, -13, 1.6236, -59.5, -2.5, 1.6236, 35.25, -2.5, 1.6236, 31.5, -1.5, 1.6236, 31.25, -1, 1.6236, -59.5, 14.75, 1.6236, 31.75, 14.75, 1.6236, 43.25, 22.25, 1.6236, 43.25, 22.75, 1.6236, 43.75, 53.5, 1.6236, 45, 22.75, 1.6236, 45.25, 14.25, 1.6236, 31.25, 53.5, 1.6236, -59.5, -1, 7.6236, 34.75, -0.25, 7.6236, 35.25, 0.75, 7.6236, 35, 1.25, 7.6236, 34.25, 0.75, 7.6236, 33, -1, 7.6236, 33.25, 0.75, 1.6236, 36.25, -0.75, 1.6236, 36.25, -1.75, 1.6236, 37, -1.75, 1.6236, 39, -0.5, 1.6236, 40, 12.75, 1.6236, 47.75, 13.75, 1.6236, 47, 13.75, 1.6236, 45, 12.5, 1.6236, 44, 10.75, 1.6236, 48, 13.25, 1.6236, 42.25, 13.25, 1.6236, 36, 10.75, 1.6236, 36, 2.25, 1.6236, 49, 10, 1.6236, 48.75, 12.5, 1.6236, 42.75, 9.75, 1.6236, 34.5, 2, 1.6236, 35.25, -0.5, 1.6236, 41.5, 10, 1.6236, 33, 2, 1.6236, 33, 1.25, 1.6236, 48, -1, 1.6236, 41.75, -1, 1.6236, 48, 2.25, 1.6236, 51, 10, 1.6236, 51, 11.25, 7.6236, 35, 12.25, 7.6236, 35.25, 13.25, 7.6236, 34.5, 13, 7.6236, 33, 11, 7.6236, 33.25, -13, 1.6236, 39.5, -11, 1.6236, 39.5, -10.75, 1.6236, 39, -13.25, 1.6236, 36.75, -13, 1.6236, 48.75, -18, 1.6236, 49, -18, 1.6236, 51, -10.75, 1.6236, 51.25, -2.5, 1.6236, 50.5, -2.5, 1.6236, 40.75, -9.25, 1.6236, 40.75, -9.25, 1.6236, 50.75, -101.75, 8.8736, 44, -101.75, 8.8736, 56.25, -82.75, 8.8736, 56.25, -82.75, 8.8736, 44, -81.75, 1.6236, 44.5, -81.75, 1.6236, 45, -64.75, 1.6236, 45, -64.75, 1.6236, 44.5, -81.75, 4.8736, 45, -64.75, 4.8736, 45.25, -64.75, 4.8736, 44.5, -81.75, 4.8736, 44.5, -62.75, 4.8736, 46, -63.5, 4.8736, 44.5, -63.75, 4.8736, 46.5, -63.75, 4.8736, 53.5, -63.5, 4.8736, 55.25, -62.75, 4.8736, 54.25, -61, 4.8736, 46, -61, 4.8736, 54.25, -65.75, 4.8736, 46.5, -65.75, 4.8736, 53.5, -60.5, 4.8736, 55.75, -58, 4.8736, 55.75, -58, 4.8736, 44.5, -60.5, 4.8736, 44.5, -61, 1.6236, 46, -63.5, 2.3736, 46, -64, 2.6236, 46.5, -64, 2.6236, 53.5, -63.5, 2.3736, 54.25, -61, 1.6236, 54.25, -62.025, 1.6236, 47.975, -62.02, 1.6236, 52.508, -60.5, 1.6236, 55.75, -58.25, 1.6236, 55.75, -58.25, 1.6236, 44.5, -60.5, 1.6236, 44.5, -47.25, 1.6236, 52, -46.5, 1.6236, 51.75, -46.25, 1.6236, 51, -46.5, 1.6236, 55.75, -46.5, 1.6236, 54, -47.25, 1.6236, 53.25, -49.75, 1.6236, 55, -49.25, 1.6236, 55.75, -53.75, 1.6236, 55, -37.75, 1.6236, 51, -37.75, 1.6236, 49, -46.25, 1.6236, 49, -53.75, 1.6236, 45, -54, 1.6236, 44.5, -57, 1.6236, 44.5, -57, 1.6236, 55.75, -54, 1.6236, 55.75, -47.25, 1.6236, 48, -46.5, 1.6236, 44.5, 19, 1.6236, 47.25, 21, 1.6236, 44.75, 18.75, 1.6236, 58.5, 21.25, 1.6236, 58.5, -145.5, 1.6236, 55.5, -83, 1.6236, 55.5, 26.25, 1.6236, 55.25, 26.5, 1.6236, 59.25, 30.5, 1.6236, 59.25, 22.75, 1.6236, 55.25, 53.5, 1.6236, 60.75, 30.75, 1.6236, 61, -19.25, 1.6236, 48.25, -19.75, 1.6236, 48.25, -20, 1.6236, 49, -19.5, 1.6236, 51.75, -21, 1.6236, 49, -21.25, 1.6236, 48.25, -22.25, 1.6236, 48.5, -33.5, 1.6236, 47.75, -34.5, 1.6236, 47.75, -34.75, 1.6236, 48.75, -26, 1.6236, 58.5, -20.5, 1.6236, 58.75, -20.5, 1.6236, 58.25, -36.5, 1.6236, 51.75, -36.75, 1.6236, 57.5, -36.25, 1.6236, 57.5, -35.5, 1.6236, 58.75, -30, 1.6236, 58.5, -36.5, 1.6236, 48, -19.25, 1.6236, 57.5, -29, 1.6236, 59.75, -27, 1.6236, 59.75, -22.25, 1.6236, 45.25, -33.25, 1.6236, 45.25, -97.25, 19.8736, 46.5, -97.25, 19.8736, 53.5, -94.75, 18.6236, 53.5, -94.75, 18.6236, 46.5, -93.75, 18.1236, 46.5, -93.75, 18.1236, 53.5, -91.5, 17.1236, 53.5, -91.5, 17.1236, 46.5, -90.5, 16.3736, 46.5, -90.5, 16.3736, 53.5, -88.25, 15.3736, 53.5, -88.25, 15.3736, 46.5, -87.25, 14.6236, 46.5, -87.25, 14.6236, 53.5, -84.75, 13.6236, 53.5, -84.75, 13.6236, 46.5, -83.75, 12.8736, 46.5, -83.75, 12.8736, 53.5, -82, 12.1236, 53.5, -82, 12.1236, 46.5, -81.5, 1.6236, 46.5, -81.5, 1.6236, 53.5, -66, 1.6236, 53.5, -66, 1.6236, 46.5, -81.5, 4.8736, 46.5, -81.5, 4.8736, 53.5, -72, 4.8736, 53.5, -72, 4.8736, 46.5, -81, 11.3736, 46.5, -81, 11.3736, 53.5, -78.5, 10.1236, 53.5, -78.5, 10.1236, 46.5, -77.5, 9.6236, 46.5, -77.5, 9.6236, 53.5, -75.25, 8.6236, 53.5, -75.25, 8.6236, 46.5, -74.25, 7.8736, 46.5, -74.25, 7.8736, 53.5, -71.75, 6.6236, 53.5, -71.75, 6.6236, 46.5, -70.75, 6.1236, 46.5, -70.75, 6.1236, 53.5, -68.25, 4.8736, 53.5, -68.25, 4.8736, 46.5, -101.5, 21.1236, 48.25, -101.5, 21.1236, 52, -99.25, 20.8736, 52, -99.25, 20.8736, 48.25, -98.25, 20.6236, 52.75, -98.25, 20.6236, 47.5, 12.75, 7.6236, 49, 12, 7.6236, 48.75, 11, 7.6236, 49.25, 11.25, 7.6236, 51, 13, 7.6236, 51, 13.25, 7.6236, 50.5, 17.25, 1.6236, 48.75, 14.75, 1.6236, 48.75, 14.5, 1.6236, 52.5, 17.25, 1.6236, 55.25, -0.5, 1.6236, 63.25, 9.25, 1.6236, 63.25, 9.25, 1.6236, 59.5, 13.5, 1.6236, 55.25, 13.25, 1.6236, 59.25, -0.5, 1.6236, 52.5, 1, 7.6236, 51, 1.25, 7.6236, 50.5, 0.75, 7.6236, 49, -1, 7.6236, 49.25, -0.75, 7.6236, 51, -2.5, 1.6236, 52.25, -9.25, 1.6236, 52.25, -2.25, 1.6236, 63.25, -17.5, 1.6236, 60.25, -19.5, 1.6236, 60.5, -19.25, 1.6236, 67.25, -17.25, 1.6236, 67.5, -17.25, 1.6236, 75.25, -2.75, 1.6236, 75.25, -2.75, 1.6236, 63.75, -9.5, 1.6236, 52.75, -17.5, 1.6236, 52.75, -34.5, 1.6236, 84.5, -34.75, 1.6236, 82.25, -35.5, 1.6236, 82, -34.75, 1.6236, 67.5, -30.75, 1.6236, 67.25, -30.75, 1.6236, 60.5, -38.5, 1.6236, 60.5, -32.5, 1.6236, 139.5, -32.5, 1.6236, 84.5, -38.75, 1.6236, 52.75, -45.25, 1.6236, 52.75, -45.5, 1.6236, 57.5, -35.5, 1.6236, 78.5, -34.75, 1.6236, 78.25, -81.25, 1.6236, 57.75, -81.5, 1.6236, 139.5, -64.75, 4.8736, 54.75, -68.75, 5.1236, 54.75, -68.75, 4.8736, 55.25, -64.75, 4.8736, 55.75, -81.75, 4.8736, 55.75, -81.75, 4.8736, 55.25, -83, 1.6236, 57.5, -145.5, 1.6236, 139.5, -81.75, 1.6236, 55.25, -81.75, 1.6236, 55.75, -64.75, 1.6236, 55.75, -64.75, 1.6236, 55.25, 14.25, 4.3736, 56.25, 14.25, 4.3736, 59.25, 25.5, 4.3736, 59.25, 25.5, 4.3736, 56.25, 14.5, 1.6236, 56.5, 14.5, 1.6236, 59.25, 17.25, 1.6236, 59.25, 17.25, 1.6236, 56.5, 22.5, 1.6236, 56.5, 22.5, 1.6236, 59.25, 25.25, 1.6236, 59.25, 25.25, 1.6236, 56.5, 21.25, 1.6236, 71.5, 23.25, 1.6236, 71.25, 23.25, 1.6236, 69.5, 18.75, 1.6236, 71.5, 25.25, 1.6236, 69.25, 25.5, 1.6236, 67.25, 25.5, 1.6236, 64.5, 14.5, 1.6236, 64.5, 12.25, 1.6236, 64.75, 12.25, 1.6236, 67.25, 14.5, 1.6236, 67.5, 14.5, 1.6236, 71.25, 21.5, 1.6236, 60.75, 18.5, 1.6236, 60.75, 25.25, 1.6236, 60.75, 18.75, 1.6236, 75, 21.25, 1.6236, 75, 29, 1.6236, 67.25, 29, 1.6236, 64.5, 14.5, 1.6236, 60.75, -37.5, 7.6236, 58.5, -37.5, 7.6236, 59.25, -36.75, 7.6236, 59.25, -36.75, 7.3736, 58.5, -19.5, 7.3736, 58.75, -19.5, 7.6236, 59.5, -18.75, 7.6236, 59.5, -18.75, 7.6236, 58.75, -30, 1.6236, 69.5, -31.25, 1.6236, 69.25, -31.75, 1.6236, 70.25, -23.25, 1.6236, 69.75, -22.5, 1.6236, 69, -25.75, 1.6236, 69.5, -23.25, 1.6236, 72, -30.5, 1.6236, 78.5, -30.5, 1.6236, 80.75, -27, 1.6236, 80.75, -32.75, 1.6236, 70.25, -32.75, 1.6236, 78.25, -26.75, 1.6236, 81.25, -27, 1.6236, 68.25, -29, 1.6236, 68.25, 13.25, 4.3736, 60.25, 10.25, 4.3736, 60.25, 10, 4.6236, 64, 10.5, 4.3736, 71.75, 13.25, 4.3736, 71.75, 14.25, 8.3736, 65.75, 17.25, 8.3736, 65.75, 17.5, 8.3736, 63.25, 14.25, 8.3736, 60.25, 22.25, 8.3736, 63.25, 22.5, 8.3736, 65.75, 25.5, 8.3736, 65.75, 25.5, 8.3736, 60.25, 25.5, 4.3736, 72.5, 25.75, 4.3736, 74, 26, 4.3736, 73.5, 26.5, 4.3736, 72.25, 28, 4.3736, 71.75, 29.5, 4.3736, 68, 29.75, 4.3736, 60.25, 26.5, 4.3736, 60.25, 27.75, 4.3736, 73.5, 30.25, 4.3736, 67.75, 29.5, 4.3736, 71.75, -25.25, 1.6236, 60.5, -25.25, 1.6236, 67.25, 10.5, 1.6236, 60.5, 10.5, 1.6236, 63.25, 13.25, 1.6236, 63.25, 13.25, 1.6236, 60.5, 26.5, 1.6236, 60.5, 26.5, 1.6236, 63.25, 29.5, 1.6236, 63.25, 29.5, 1.6236, 60.5, 31.25, 1.6236, 68.5, 30.5, 1.6236, 68.75, 30.5, 1.6236, 70.5, 53.5, 1.6236, 70.5, 30.75, 1.6236, 63.25, 31.25, 1.6236, 63.5, 24.5, 6.3736, 62.25, 24.5, 6.3736, 63.5, 25.25, 6.3736, 63.5, 25.25, 6.3736, 62.25, -1, 1.6236, 76.75, -1.5, 1.6236, 77, -1.5, 1.6236, 79, 1.25, 1.6236, 79, 1.25, 1.6236, 67, -1.25, 1.6236, 65, 22.25, 8.3736, 68.5, 25.5, 8.3736, 71.5, 17.5, 8.3736, 68.5, 14.25, 8.3736, 71.5, 10.75, 1.6236, 68.5, 10.75, 1.6236, 71.5, 13.25, 1.6236, 71.5, 13.25, 1.6236, 68.5, 28.75, 1.6236, 69.5, 28.75, 1.6236, 71.5, 29.25, 1.6236, 71.5, 29.25, 1.6236, 68.5, 26.5, 1.6236, 68.5, 26.5, 1.6236, 69.25, 13.25, 1.6236, 76.5, 13.25, 1.6236, 72.75, 9.5, 1.6236, 72.5, 9.5, 1.6236, 68.75, 2.75, 1.6236, 68.75, 2.75, 1.6236, 80.25, 2.25, 1.6236, 80.75, 0.75, 1.6236, 80.75, 1, 1.6236, 139.5, 14.75, 1.6236, 139.5, 15, 1.6236, 76.75, 24.25, 4.3736, 70.25, 24.25, 4.3736, 71.25, 25.25, 4.3736, 71.25, 25.25, 4.3736, 70.25, 17.5, 1.6236, 77.25, 17.25, 1.6236, 76.75, 30.5, 1.6236, 72.5, 28.75, 1.6236, 72.75, 28.5, 1.6236, 74.5, 26.75, 1.6236, 74.5, 26.5, 1.6236, 76.75, 53.5, 1.6236, 139.5, -21.5, 1.6236, 72, -20, 1.6236, 71.75, -20, 1.8736, 70.5, -22, 1.8736, 70.5, 14.5, 6.3736, 70.5, 14.5, 6.3736, 71.25, 15.25, 6.3736, 71.25, 15.25, 6.3736, 70.5, 24.5, 2.3736, 70.5, 24.5, 2.3736, 71.25, 25.25, 2.3736, 71.25, 25.25, 2.3736, 70.5, 26.5, 1.6236, 70.5, 26.5, 1.6236, 71.5, 27.5, 1.6236, 71.5, 27.5, 1.6236, 70.5, -19.5, 1.6236, 75.75, -19, 1.6236, 72.75, -20.25, 1.6236, 73.5, -19.5, 1.6236, 79.75, -18, 1.6236, 79, -18, 1.6236, 77, -21.75, 1.6236, 73.5, -26.75, 1.6236, 82.75, -19, 1.6236, 82.75, 25.75, 4.3736, 75.75, 14.25, 4.3736, 72.5, 18, 4.3736, 75.75, 14.25, 4.3736, 75.75, 18.25, 4.3736, 76.25, 14.5, 1.6236, 72.5, 14.5, 1.6236, 75.5, 17.25, 1.6236, 75.5, 17.25, 1.6236, 72.5, 23.25, 1.6236, 74.25, 23.25, 1.6236, 72.5, 22.5, 1.6236, 72.5, 22.5, 1.6236, 75.25, 25.5, 1.6236, 75.5, 25.5, 1.6236, 74.5, 24.5, 1.6236, 72.5, 24.5, 1.6236, 73.25, 25.5, 1.6236, 73.25, 25.5, 1.6236, 72.5, 26.75, 1.6236, 72.75, 26.75, 1.6236, 73.25, 27.5, 1.6236, 73.25, 27.5, 1.6236, 72.75, -34.5, 8.6236, 79.25, -34.5, 8.6236, 81.25, -31.5, 8.6236, 81.25, -31.5, 8.6236, 79.25, -32.75, 2.3736, 79.5, -32.75, 2.3736, 80.75, -31.75, 2.3736, 80.75, -31.75, 2.3736, 79.5, -17.25, 1.6236, 80.75, -17.25, 1.6236, 84.25, -19.5, 1.6236, 84.5, -19.5, 1.6236, 139.5, -31, 8.6236, 83.5, -27.5, 8.6236, 83.75, -27.75, 8.6236, 81.75, -30.75, 8.6236, 81.75, -29.75, 2.3736, 82, -29.75, 2.3736, 82.75, -28, 2.3736, 82.75, -28, 2.3736, 82, -32.75, 4.3736, 82.25, -32.75, 4.3736, 82.75, -31.75, 4.3736, 82.75, -31.75, 4.3736, 82.25) +polygons = [PackedInt32Array(2, 1, 0), PackedInt32Array(2, 0, 3), PackedInt32Array(3, 0, 4), PackedInt32Array(4, 0, 5), PackedInt32Array(3, 4, 6), PackedInt32Array(6, 4, 7), PackedInt32Array(9, 8, 10), PackedInt32Array(10, 8, 11), PackedInt32Array(10, 11, 12), PackedInt32Array(12, 11, 6), PackedInt32Array(12, 6, 7), PackedInt32Array(12, 7, 13), PackedInt32Array(15, 14, 16), PackedInt32Array(16, 14, 17), PackedInt32Array(19, 18, 17), PackedInt32Array(14, 12, 17), PackedInt32Array(17, 12, 13), PackedInt32Array(17, 13, 19), PackedInt32Array(21, 20, 18), PackedInt32Array(23, 22, 21), PackedInt32Array(23, 21, 19), PackedInt32Array(19, 21, 18), PackedInt32Array(26, 25, 24), PackedInt32Array(26, 24, 27), PackedInt32Array(27, 24, 28), PackedInt32Array(28, 29, 27), PackedInt32Array(30, 22, 23), PackedInt32Array(24, 30, 28), PackedInt32Array(28, 30, 31), PackedInt32Array(31, 30, 23), PackedInt32Array(33, 32, 34), PackedInt32Array(34, 32, 35), PackedInt32Array(35, 32, 36), PackedInt32Array(36, 32, 37), PackedInt32Array(39, 38, 40), PackedInt32Array(40, 38, 41), PackedInt32Array(41, 38, 42), PackedInt32Array(44, 43, 45), PackedInt32Array(45, 43, 46), PackedInt32Array(46, 43, 47), PackedInt32Array(50, 49, 48), PackedInt32Array(52, 51, 53), PackedInt32Array(53, 51, 56), PackedInt32Array(53, 56, 55), PackedInt32Array(53, 55, 54), PackedInt32Array(48, 53, 50), PackedInt32Array(50, 53, 54), PackedInt32Array(57, 54, 58), PackedInt32Array(58, 54, 55), PackedInt32Array(47, 52, 46), PackedInt32Array(46, 52, 53), PackedInt32Array(42, 38, 56), PackedInt32Array(56, 38, 55), PackedInt32Array(51, 59, 56), PackedInt32Array(60, 56, 61), PackedInt32Array(61, 56, 59), PackedInt32Array(62, 51, 63), PackedInt32Array(63, 51, 52), PackedInt32Array(65, 64, 66), PackedInt32Array(66, 64, 67), PackedInt32Array(67, 64, 68), PackedInt32Array(70, 69, 71), PackedInt32Array(71, 69, 72), PackedInt32Array(41, 71, 40), PackedInt32Array(40, 71, 72), PackedInt32Array(74, 73, 75), PackedInt32Array(75, 73, 76), PackedInt32Array(69, 70, 73), PackedInt32Array(73, 70, 76), PackedInt32Array(78, 77, 79), PackedInt32Array(79, 77, 80), PackedInt32Array(84, 83, 81), PackedInt32Array(81, 83, 82), PackedInt32Array(88, 87, 85), PackedInt32Array(85, 87, 86), PackedInt32Array(92, 91, 89), PackedInt32Array(89, 91, 90), PackedInt32Array(95, 94, 93), PackedInt32Array(98, 97, 96), PackedInt32Array(93, 99, 95), PackedInt32Array(95, 99, 96), PackedInt32Array(96, 99, 98), PackedInt32Array(98, 99, 100), PackedInt32Array(95, 96, 101), PackedInt32Array(101, 96, 102), PackedInt32Array(106, 105, 99), PackedInt32Array(99, 105, 100), PackedInt32Array(100, 105, 103), PackedInt32Array(103, 105, 104), PackedInt32Array(111, 114, 112), PackedInt32Array(112, 113, 107), PackedInt32Array(107, 113, 108), PackedInt32Array(108, 113, 109), PackedInt32Array(109, 113, 110), PackedInt32Array(110, 114, 111), PackedInt32Array(114, 113, 112), PackedInt32Array(113, 114, 110), PackedInt32Array(118, 117, 107), PackedInt32Array(107, 117, 112), PackedInt32Array(112, 117, 115), PackedInt32Array(115, 117, 116), PackedInt32Array(121, 120, 119), PackedInt32Array(123, 122, 124), PackedInt32Array(124, 122, 126), PackedInt32Array(124, 126, 125), PackedInt32Array(121, 119, 127), PackedInt32Array(121, 130, 128), PackedInt32Array(128, 130, 129), PackedInt32Array(133, 132, 131), PackedInt32Array(134, 127, 135), PackedInt32Array(124, 125, 119), PackedInt32Array(119, 125, 127), PackedInt32Array(136, 131, 137), PackedInt32Array(121, 127, 130), PackedInt32Array(130, 127, 134), PackedInt32Array(130, 134, 131), PackedInt32Array(131, 134, 133), PackedInt32Array(131, 136, 130), PackedInt32Array(44, 45, 138), PackedInt32Array(138, 45, 139), PackedInt32Array(140, 138, 141), PackedInt32Array(141, 138, 139), PackedInt32Array(0, 1, 142), PackedInt32Array(142, 1, 143), PackedInt32Array(146, 145, 144), PackedInt32Array(144, 147, 29), PackedInt32Array(144, 29, 146), PackedInt32Array(146, 29, 148), PackedInt32Array(148, 29, 28), PackedInt32Array(148, 149, 146), PackedInt32Array(151, 150, 152), PackedInt32Array(152, 150, 74), PackedInt32Array(152, 74, 75), PackedInt32Array(152, 75, 153), PackedInt32Array(156, 155, 154), PackedInt32Array(159, 158, 157), PackedInt32Array(162, 161, 160), PackedInt32Array(165, 164, 163), PackedInt32Array(166, 165, 167), PackedInt32Array(167, 165, 163), PackedInt32Array(128, 129, 163), PackedInt32Array(163, 129, 168), PackedInt32Array(163, 168, 159), PackedInt32Array(162, 160, 169), PackedInt32Array(169, 160, 153), PackedInt32Array(154, 152, 153), PackedInt32Array(170, 167, 171), PackedInt32Array(171, 167, 160), PackedInt32Array(153, 160, 156), PackedInt32Array(156, 160, 167), PackedInt32Array(156, 167, 157), PackedInt32Array(157, 167, 163), PackedInt32Array(173, 172, 157), PackedInt32Array(157, 172, 156), PackedInt32Array(156, 154, 153), PackedInt32Array(157, 163, 159), PackedInt32Array(177, 176, 174), PackedInt32Array(174, 176, 175), PackedInt32Array(181, 180, 178), PackedInt32Array(178, 180, 179), PackedInt32Array(185, 184, 182), PackedInt32Array(182, 184, 183), PackedInt32Array(189, 188, 186), PackedInt32Array(186, 188, 187), PackedInt32Array(193, 192, 190), PackedInt32Array(190, 192, 191), PackedInt32Array(197, 196, 194), PackedInt32Array(194, 196, 195), PackedInt32Array(201, 200, 198), PackedInt32Array(198, 200, 199), PackedInt32Array(205, 204, 202), PackedInt32Array(202, 204, 203), PackedInt32Array(209, 208, 206), PackedInt32Array(206, 208, 207), PackedInt32Array(213, 212, 210), PackedInt32Array(210, 212, 211), PackedInt32Array(215, 214, 216), PackedInt32Array(216, 214, 217), PackedInt32Array(216, 217, 101), PackedInt32Array(216, 101, 102), PackedInt32Array(221, 220, 218), PackedInt32Array(218, 220, 219), PackedInt32Array(221, 223, 220), PackedInt32Array(220, 223, 222), PackedInt32Array(225, 224, 226), PackedInt32Array(226, 224, 229), PackedInt32Array(226, 229, 228), PackedInt32Array(226, 228, 227), PackedInt32Array(231, 230, 232), PackedInt32Array(232, 230, 233), PackedInt32Array(236, 235, 234), PackedInt32Array(232, 233, 237), PackedInt32Array(237, 238, 236), PackedInt32Array(237, 236, 232), PackedInt32Array(232, 236, 239), PackedInt32Array(239, 236, 234), PackedInt32Array(241, 240, 242), PackedInt32Array(242, 240, 244), PackedInt32Array(242, 244, 243), PackedInt32Array(246, 80, 245), PackedInt32Array(245, 80, 77), PackedInt32Array(245, 239, 246), PackedInt32Array(246, 239, 247), PackedInt32Array(247, 239, 234), PackedInt32Array(249, 248, 250), PackedInt32Array(250, 248, 251), PackedInt32Array(252, 251, 253), PackedInt32Array(253, 251, 254), PackedInt32Array(247, 254, 255), PackedInt32Array(255, 254, 256), PackedInt32Array(256, 254, 248), PackedInt32Array(248, 254, 251), PackedInt32Array(255, 246, 247), PackedInt32Array(257, 259, 258), PackedInt32Array(261, 260, 262), PackedInt32Array(262, 260, 263), PackedInt32Array(257, 265, 264), PackedInt32Array(267, 266, 268), PackedInt32Array(268, 266, 263), PackedInt32Array(268, 269, 259), PackedInt32Array(270, 269, 260), PackedInt32Array(260, 269, 263), PackedInt32Array(263, 269, 268), PackedInt32Array(259, 257, 268), PackedInt32Array(268, 257, 271), PackedInt32Array(271, 257, 264), PackedInt32Array(271, 264, 272), PackedInt32Array(274, 273, 275), PackedInt32Array(275, 273, 276), PackedInt32Array(278, 275, 277), PackedInt32Array(277, 275, 276), PackedInt32Array(142, 143, 279), PackedInt32Array(279, 271, 142), PackedInt32Array(142, 271, 272), PackedInt32Array(142, 272, 280), PackedInt32Array(284, 283, 281), PackedInt32Array(281, 283, 282), PackedInt32Array(288, 287, 285), PackedInt32Array(285, 287, 286), PackedInt32Array(292, 291, 289), PackedInt32Array(289, 291, 290), PackedInt32Array(296, 295, 293), PackedInt32Array(293, 295, 294), PackedInt32Array(298, 297, 299), PackedInt32Array(299, 297, 300), PackedInt32Array(301, 299, 302), PackedInt32Array(302, 299, 303), PackedInt32Array(305, 304, 306), PackedInt32Array(306, 304, 307), PackedInt32Array(300, 308, 307), PackedInt32Array(141, 309, 140), PackedInt32Array(140, 309, 310), PackedInt32Array(309, 311, 303), PackedInt32Array(297, 313, 300), PackedInt32Array(300, 313, 312), PackedInt32Array(307, 304, 310), PackedInt32Array(303, 315, 302), PackedInt32Array(302, 315, 314), PackedInt32Array(309, 303, 310), PackedInt32Array(310, 303, 299), PackedInt32Array(310, 299, 300), PackedInt32Array(310, 300, 307), PackedInt32Array(304, 316, 310), PackedInt32Array(320, 319, 317), PackedInt32Array(317, 319, 318), PackedInt32Array(324, 323, 321), PackedInt32Array(321, 323, 322), PackedInt32Array(325, 327, 326), PackedInt32Array(330, 329, 328), PackedInt32Array(330, 328, 331), PackedInt32Array(334, 333, 332), PackedInt32Array(335, 327, 336), PackedInt32Array(336, 327, 332), PackedInt32Array(331, 337, 334), PackedInt32Array(339, 170, 338), PackedInt32Array(338, 170, 171), PackedInt32Array(325, 330, 327), PackedInt32Array(327, 330, 331), PackedInt32Array(327, 331, 332), PackedInt32Array(332, 331, 334), PackedInt32Array(339, 338, 325), PackedInt32Array(325, 338, 330), PackedInt32Array(341, 340, 342), PackedInt32Array(342, 340, 343), PackedInt32Array(343, 340, 344), PackedInt32Array(346, 345, 347), PackedInt32Array(347, 345, 348), PackedInt32Array(350, 349, 351), PackedInt32Array(351, 349, 352), PackedInt32Array(347, 348, 349), PackedInt32Array(349, 348, 352), PackedInt32Array(354, 353, 355), PackedInt32Array(355, 353, 356), PackedInt32Array(357, 356, 358), PackedInt32Array(358, 356, 359), PackedInt32Array(359, 356, 360), PackedInt32Array(355, 356, 361), PackedInt32Array(361, 356, 357), PackedInt32Array(359, 362, 358), PackedInt32Array(358, 363, 357), PackedInt32Array(364, 249, 365), PackedInt32Array(365, 249, 250), PackedInt32Array(369, 368, 366), PackedInt32Array(366, 368, 367), PackedInt32Array(373, 372, 370), PackedInt32Array(370, 372, 371), PackedInt32Array(375, 374, 376), PackedInt32Array(376, 374, 377), PackedInt32Array(378, 149, 379), PackedInt32Array(379, 149, 148), PackedInt32Array(374, 379, 377), PackedInt32Array(377, 379, 148), PackedInt32Array(383, 382, 380), PackedInt32Array(380, 382, 381), PackedInt32Array(385, 384, 386), PackedInt32Array(386, 384, 387), PackedInt32Array(306, 388, 305), PackedInt32Array(305, 388, 389), PackedInt32Array(389, 388, 384), PackedInt32Array(384, 388, 387), PackedInt32Array(350, 351, 390), PackedInt32Array(390, 351, 391), PackedInt32Array(346, 392, 345), PackedInt32Array(345, 392, 393), PackedInt32Array(390, 391, 392), PackedInt32Array(392, 391, 393), PackedInt32Array(397, 396, 394), PackedInt32Array(394, 396, 395), PackedInt32Array(399, 398, 400), PackedInt32Array(400, 398, 401), PackedInt32Array(403, 402, 398), PackedInt32Array(398, 402, 401), PackedInt32Array(406, 405, 404), PackedInt32Array(408, 407, 406), PackedInt32Array(406, 404, 408), PackedInt32Array(408, 404, 409), PackedInt32Array(412, 411, 410), PackedInt32Array(409, 404, 410), PackedInt32Array(410, 404, 414), PackedInt32Array(410, 414, 413), PackedInt32Array(410, 413, 412), PackedInt32Array(418, 417, 415), PackedInt32Array(415, 417, 416), PackedInt32Array(420, 419, 414), PackedInt32Array(414, 419, 413), PackedInt32Array(423, 422, 421), PackedInt32Array(425, 424, 423), PackedInt32Array(423, 421, 425), PackedInt32Array(425, 421, 377), PackedInt32Array(425, 377, 426), PackedInt32Array(425, 426, 413), PackedInt32Array(421, 376, 377), PackedInt32Array(413, 419, 425), PackedInt32Array(428, 427, 429), PackedInt32Array(429, 427, 430), PackedInt32Array(434, 433, 431), PackedInt32Array(431, 433, 432), PackedInt32Array(438, 437, 435), PackedInt32Array(435, 437, 436), PackedInt32Array(442, 441, 439), PackedInt32Array(439, 441, 440), PackedInt32Array(445, 444, 443), PackedInt32Array(447, 446, 448), PackedInt32Array(448, 446, 443), PackedInt32Array(445, 443, 449), PackedInt32Array(449, 443, 446), PackedInt32Array(450, 337, 451), PackedInt32Array(451, 337, 446), PackedInt32Array(446, 337, 449), PackedInt32Array(449, 337, 331), PackedInt32Array(354, 452, 353), PackedInt32Array(353, 452, 454), PackedInt32Array(353, 454, 453), PackedInt32Array(454, 455, 453), PackedInt32Array(452, 456, 454), PackedInt32Array(460, 459, 457), PackedInt32Array(457, 459, 458), PackedInt32Array(462, 461, 463), PackedInt32Array(463, 461, 464), PackedInt32Array(466, 465, 461), PackedInt32Array(461, 465, 464), PackedInt32Array(470, 469, 467), PackedInt32Array(467, 469, 468), PackedInt32Array(474, 473, 471), PackedInt32Array(471, 473, 472), PackedInt32Array(385, 386, 448), PackedInt32Array(448, 386, 447), PackedInt32Array(478, 477, 475), PackedInt32Array(475, 477, 476), PackedInt32Array(482, 481, 479), PackedInt32Array(479, 481, 480), PackedInt32Array(484, 483, 411), PackedInt32Array(486, 485, 484), PackedInt32Array(486, 484, 412), PackedInt32Array(412, 484, 411), PackedInt32Array(490, 489, 487), PackedInt32Array(487, 489, 488), PackedInt32Array(494, 493, 491), PackedInt32Array(491, 493, 492), PackedInt32Array(498, 497, 495), PackedInt32Array(495, 497, 496), PackedInt32Array(265, 485, 264), PackedInt32Array(264, 485, 486)] [sub_resource type="PlaneMesh" id="PlaneMesh_csng8"] size = Vector2(200, 200) @@ -160,7 +160,7 @@ transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 14.063 transform = Transform3D(0.96, 0, 0, 0, 1, 0, 0, 0, 1, -28.008, 0.0418303, 59.8829) [node name="MeshInstance3D" type="MeshInstance3D" parent="NavigationRegion3D"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -46, -1, 40) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -46, 1.2, 40) layers = 0 mesh = SubResource("PlaneMesh_csng8") skeleton = NodePath("../..") diff --git a/Zennysoft.Game.Ma/src/map/dungeon/rooms/Set A/12. Jump Scare Room.tscn b/Zennysoft.Game.Ma/src/map/dungeon/rooms/Set A/12. Jump Scare Room.tscn index 4f7ee0ca7..352a53165 100644 --- a/Zennysoft.Game.Ma/src/map/dungeon/rooms/Set A/12. Jump Scare Room.tscn +++ b/Zennysoft.Game.Ma/src/map/dungeon/rooms/Set A/12. Jump Scare Room.tscn @@ -1,6 +1,7 @@ -[gd_scene load_steps=17 format=3 uid="uid://dhkbvos11tkdw"] +[gd_scene load_steps=19 format=3 uid="uid://dhkbvos11tkdw"] -[ext_resource type="Script" uid="uid://bccyfmj8ikewh" path="res://src/map/dungeon/code/SpecialRoom.cs" id="1_5m2h2"] +[ext_resource type="Script" uid="uid://cwqgealqc3w4" path="res://src/map/dungeon/code/JumpScareRoom.cs" id="1_unlia"] +[ext_resource type="Resource" uid="uid://iapl7k07fwt0" path="res://src/npc/Proscenium/JumpScare.dialogue" id="2_fgt65"] [ext_resource type="PackedScene" uid="uid://bc7ubbvnx0jdo" path="res://src/map/dungeon/models/Area 1/Jumpscare/A1-Jumpscare.glb" id="2_umqhi"] [ext_resource type="Texture2D" uid="uid://dw50ys561j8no" path="res://src/map/assets/DUST_1.png" id="5_5m2h2"] @@ -31,6 +32,9 @@ albedo_color = Color(0, 0, 0, 1) material = SubResource("StandardMaterial3D_unlia") size = Vector2(20.5, 19) +[sub_resource type="BoxShape3D" id="BoxShape3D_unlia"] +size = Vector3(6.43689, 5.99969, 4.5957) + [sub_resource type="Curve" id="Curve_umqhi"] _limits = [-2.0, 2.0, 0.0, 1.0] _data = [Vector2(0.00358423, 0.230769), 0.0, 0.0, 0, 0, Vector2(0.982079, -1.03846), 0.0, 0.0, 0, 0] @@ -68,7 +72,8 @@ subdivide_depth = 1 [node name="JumpScareRoom" type="Node3D"] transform = Transform3D(2, 0, 0, 0, 2, 0, 0, 0, 2, -8.509, -3.41755, -8.60795) -script = ExtResource("1_5m2h2") +script = ExtResource("1_unlia") +Dialogue = ExtResource("2_fgt65") [node name="Model" type="Node3D" parent="."] @@ -129,6 +134,15 @@ layers = 2 sorting_offset = 100.0 mesh = SubResource("PlaneMesh_unlia") +[node name="JumpScare" type="Area3D" parent="Room"] +unique_name_in_owner = true +collision_layer = 0 +collision_mask = 64 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Room/JumpScare"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.112, 4.54046, 4.67285) +shape = SubResource("BoxShape3D_unlia") + [node name="Lights" type="Node3D" parent="."] [node name="OmniLight3D" type="OmniLight3D" parent="Lights"] diff --git a/Zennysoft.Game.Ma/src/npc/Proscenium/JumpScare.dialogue b/Zennysoft.Game.Ma/src/npc/Proscenium/JumpScare.dialogue new file mode 100644 index 000000000..5e058a623 --- /dev/null +++ b/Zennysoft.Game.Ma/src/npc/Proscenium/JumpScare.dialogue @@ -0,0 +1,2 @@ +~ general +boo brother \ No newline at end of file diff --git a/Zennysoft.Game.Ma/src/npc/Proscenium/JumpScare.dialogue.import b/Zennysoft.Game.Ma/src/npc/Proscenium/JumpScare.dialogue.import new file mode 100644 index 000000000..d3bf58683 --- /dev/null +++ b/Zennysoft.Game.Ma/src/npc/Proscenium/JumpScare.dialogue.import @@ -0,0 +1,16 @@ +[remap] + +importer="dialogue_manager" +importer_version=15 +type="Resource" +uid="uid://iapl7k07fwt0" +path="res://.godot/imported/JumpScare.dialogue-d1f0414aee29e70316e2fe293c82adb0.tres" + +[deps] + +source_file="res://src/npc/Proscenium/JumpScare.dialogue" +dest_files=["res://.godot/imported/JumpScare.dialogue-d1f0414aee29e70316e2fe293c82adb0.tres"] + +[params] + +defaults=true diff --git a/Zennysoft.Game.Ma/src/player/Player.cs b/Zennysoft.Game.Ma/src/player/Player.cs index 820b40f43..4929008e2 100644 --- a/Zennysoft.Game.Ma/src/player/Player.cs +++ b/Zennysoft.Game.Ma/src/player/Player.cs @@ -231,6 +231,8 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide ExperiencePointsComponent.LevelUp(); } + public void PlayJumpScareAnimation() => PlayerFXAnimations.Play("jump_scare"); + public void Die() { PlayerFXAnimations.Play("death"); diff --git a/Zennysoft.Game.Ma/src/player/Player.tscn b/Zennysoft.Game.Ma/src/player/Player.tscn index 2a7a83891..7e74e51ef 100644 --- a/Zennysoft.Game.Ma/src/player/Player.tscn +++ b/Zennysoft.Game.Ma/src/player/Player.tscn @@ -457,7 +457,7 @@ tracks/1/keys = { } [sub_resource type="Animation" id="Animation_wvcio"] -resource_name = "test_animation" +resource_name = "jump_scare" length = 5.0005 tracks/0/type = "value" tracks/0/imported = false @@ -492,8 +492,8 @@ _data = { &"RESET": SubResource("Animation_jtmj1"), &"death": SubResource("Animation_es4xk"), &"hit_wall": SubResource("Animation_ebyyx"), -&"normal_attack": SubResource("Animation_v5qoq"), -&"test_animation": SubResource("Animation_wvcio") +&"jump_scare": SubResource("Animation_wvcio"), +&"normal_attack": SubResource("Animation_v5qoq") } [sub_resource type="Animation" id="Animation_v3vjx"]