diff --git a/BMConfig.cs b/BMConfig.cs index 314bdea..79bb854 100644 --- a/BMConfig.cs +++ b/BMConfig.cs @@ -34,6 +34,10 @@ public class BMConfig : ModConfig [Label("Disable Respawning during Boss Fights")] public bool NoBossFightRespawn; + [DefaultValue(0)] + [Label("Additional time to respawn during boss fights")] + public int AddedBossFightRespawnTime; + [DefaultValue(true)] [Label("Boss Death Cam")] public bool DeathCam; diff --git a/BMPlayer.cs b/BMPlayer.cs index 8d9f198..d5e1f91 100644 --- a/BMPlayer.cs +++ b/BMPlayer.cs @@ -11,6 +11,7 @@ public class BMPlayer : ModPlayer public bool teamLoaded = false; public string teamChosen = GetInstance().TeamToJoin; public int team; + public override void OnEnterWorld(Player player) { base.OnEnterWorld(player); @@ -69,28 +70,23 @@ public override void UpdateDead() //no boss fight respawn { if (BMConfig.Instance.NoBossFightRespawn) { - bool flag = false; - for (int i = 0; i < Main.maxNPCs; i++) + if (BossAlive()) { - NPC npc = Main.npc[i]; - if (npc.active && (npc.boss || npc.type == NPCID.EaterofWorldsHead)) - { - Player bosstarget = Main.player[npc.target]; - if (!bosstarget.active || bosstarget.dead) - { - break; - } - flag = true; - break; - } + player.respawnTimer++; } - if (!flag) + } + } + + public override void Kill(double damage, int hitDirection, bool pvp, string deathText) + { + if (BMConfig.Instance.AddedBossFightRespawnTime != 0) + { + if (BossAlive()) { - return; + player.respawnTimer += BMConfig.Instance.AddedBossFightRespawnTime; } - player.respawnTimer++; } - } + } public override void SendClientChanges(ModPlayer localPlayer) { @@ -107,5 +103,25 @@ public override void SendClientChanges(ModPlayer localPlayer) base.SendClientChanges(localPlayer); } } + + public bool BossAlive() + { + bool flag = false; + for (int i = 0; i < Main.maxNPCs; i++) + { + NPC npc = Main.npc[i]; + if (npc.active && (npc.boss || npc.type == NPCID.EaterofWorldsHead)) + { + Player bosstarget = Main.player[npc.target]; + if (!bosstarget.active || bosstarget.dead) + { + break; + } + flag = true; + break; + } + } + return flag; + } } }