diff --git a/FightSystem_Core/src/config.yml b/FightSystem_Core/src/config.yml
index e2fffe4..49f992a 100644
--- a/FightSystem_Core/src/config.yml
+++ b/FightSystem_Core/src/config.yml
@@ -121,6 +121,8 @@ WinConditions: # defaults to none if missing
# - HELLS_BELLS
# - METEOR
+ # - PERSISTENT_DAMAGE
+ # - TNT_DISTRIBUTION
WinConditionParams:
# The time of any of the timeout win conditions in seconds
diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.java b/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.java
index 5de02c4..e6ae767 100644
--- a/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.java
+++ b/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.java
@@ -26,6 +26,8 @@ import de.steamwar.fightsystem.commands.*;
import de.steamwar.fightsystem.countdown.*;
import de.steamwar.fightsystem.event.HellsBells;
import de.steamwar.fightsystem.event.Meteor;
+import de.steamwar.fightsystem.event.PersistentDamage;
+import de.steamwar.fightsystem.event.TNTDistributor;
import de.steamwar.fightsystem.fight.Fight;
import de.steamwar.fightsystem.fight.FightTeam;
import de.steamwar.fightsystem.fight.FightWorld;
@@ -129,6 +131,8 @@ public class FightSystem extends JavaPlugin {
new HellsBells();
new Meteor();
+ new PersistentDamage();
+ new TNTDistributor();
new WinconditionAmongUs();
new NoPlayersOnlineCountdown();
diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/event/PersistentDamage.java b/FightSystem_Core/src/de/steamwar/fightsystem/event/PersistentDamage.java
new file mode 100644
index 0000000..606894f
--- /dev/null
+++ b/FightSystem_Core/src/de/steamwar/fightsystem/event/PersistentDamage.java
@@ -0,0 +1,44 @@
+/*
+ * This file is a part of the SteamWar software.
+ *
+ * Copyright (C) 2023 SteamWar.de-Serverteam
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
+package de.steamwar.fightsystem.event;
+
+import com.sk89q.worldedit.WorldEditException;
+import de.steamwar.fightsystem.FightSystem;
+import de.steamwar.fightsystem.fight.Fight;
+import de.steamwar.fightsystem.states.FightState;
+import de.steamwar.fightsystem.states.OneShotStateDependent;
+import de.steamwar.fightsystem.utils.WorldeditWrapper;
+import de.steamwar.fightsystem.winconditions.Winconditions;
+import de.steamwar.sql.SchematicNode;
+
+import java.util.logging.Level;
+
+public class PersistentDamage {
+
+ public PersistentDamage() {
+ new OneShotStateDependent(Winconditions.PERSISTENT_DAMAGE, FightState.Spectate, () -> Fight.teams().forEach(team -> {
+ try{
+ WorldeditWrapper.impl.saveSchem(SchematicNode.getSchematicNode(team.getSchematic()), team.getExtendRegion(), team.getSchemRegion().getMinY());
+ }catch(WorldEditException e){
+ FightSystem.getPlugin().getLogger().log(Level.SEVERE, "Could not persist schematic state", e);
+ }
+ }));
+ }
+}
diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/event/TNTDistributor.java b/FightSystem_Core/src/de/steamwar/fightsystem/event/TNTDistributor.java
new file mode 100644
index 0000000..dc630a3
--- /dev/null
+++ b/FightSystem_Core/src/de/steamwar/fightsystem/event/TNTDistributor.java
@@ -0,0 +1,39 @@
+/*
+ * This file is a part of the SteamWar software.
+ *
+ * Copyright (C) 2023 SteamWar.de-Serverteam
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
+package de.steamwar.fightsystem.event;
+
+import de.steamwar.fightsystem.ArenaMode;
+import de.steamwar.fightsystem.fight.Fight;
+import de.steamwar.fightsystem.states.FightState;
+import de.steamwar.fightsystem.states.StateDependentTask;
+import org.bukkit.Material;
+import org.bukkit.inventory.ItemStack;
+
+public class TNTDistributor {
+
+ public TNTDistributor() {
+ new StateDependentTask(ArenaMode.AntiReplay, FightState.Running, () -> Fight.teams().forEach(team -> team.getPlayers().forEach(fp -> {
+ if(!fp.isLiving())
+ return;
+
+ fp.ifPlayer(player -> player.getInventory().addItem(new ItemStack(Material.TNT, 20)));
+ })), 0, 300);
+ }
+}
diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/winconditions/Winconditions.java b/FightSystem_Core/src/de/steamwar/fightsystem/winconditions/Winconditions.java
index 620a247..fa91d9c 100644
--- a/FightSystem_Core/src/de/steamwar/fightsystem/winconditions/Winconditions.java
+++ b/FightSystem_Core/src/de/steamwar/fightsystem/winconditions/Winconditions.java
@@ -39,5 +39,7 @@ public enum Winconditions {
HELLS_BELLS,
METEOR,
- AMONG_US
+ AMONG_US,
+ PERSISTENT_DAMAGE,
+ TNT_DISTRIBUTION
}