diff --git a/Characters/Boss.cs b/Characters/Boss.cs index 258fe67..8e657ad 100644 --- a/Characters/Boss.cs +++ b/Characters/Boss.cs @@ -38,6 +38,9 @@ public abstract partial class Boss : Enemy } } + [Export] + public float MaxHealth { get; set; } + public override void _Ready() { base._Ready(); @@ -49,7 +52,7 @@ public abstract partial class Boss : Enemy this.GetWorld().CurrentPlayer.Death += (args) => { - Reset(); + IsActive = false; }; _eventBus = this.GetEventBus(); @@ -63,8 +66,6 @@ public abstract partial class Boss : Enemy protected virtual void Reset() { - IsActive = false; - // reset animations foreach (var child in GetNode("Animations").GetChildren()) { @@ -79,5 +80,6 @@ public abstract partial class Boss : Enemy StateMachine.ChangeState(StateMachine.InitialState); ThinkerStateMachine.ChangeState(ThinkerStateMachine.InitialState); + Health = MaxHealth; } } diff --git a/Characters/Doc.cs b/Characters/Doc.cs index c83fb7f..12768aa 100644 --- a/Characters/Doc.cs +++ b/Characters/Doc.cs @@ -39,6 +39,10 @@ public partial class Doc : Boss var coll = trig.GetNode("CollisionShape2D"); coll.Disabled = true; } + else + { + Reset(); + } } } @@ -131,4 +135,13 @@ public partial class Doc : Boss } base._Process(delta); } + + protected override void Reset() + { + base.Reset(); + GlobalPosition = Vector2.Zero; + var trig = GetNode("InteractionTrigger"); + var coll = trig.GetNode("CollisionShape2D"); + coll.Disabled = false; + } } diff --git a/Characters/Doc.tscn b/Characters/Doc.tscn index 5154445..ff819bb 100644 --- a/Characters/Doc.tscn +++ b/Characters/Doc.tscn @@ -565,6 +565,7 @@ Lance = NodePath("Inventory/DocLance") BossStateMachine = NodePath("BossStateMachine") BossName = "Doc, The Two-Time" Music = ExtResource("3_eo4lg") +MaxHealth = 900.0 DefaultSelectedItem = NodePath("Inventory/DocLance") ThinkerStateMachine = NodePath("ThinkerStateMachine") HandTexture = ExtResource("4_8lqj6") diff --git a/UI/BossBar.cs b/UI/BossBar.cs index 74e0618..112138f 100644 --- a/UI/BossBar.cs +++ b/UI/BossBar.cs @@ -66,7 +66,7 @@ public partial class BossBar : VBoxContainer newBoss.Hurt += OnBossHurt; newBoss.Death += OnBossDeath; - ProgressBar.MaxValue = newBoss.Health; + ProgressBar.MaxValue = newBoss.MaxHealth; ProgressBar.Value = newBoss.Health; Visible = true;