Merge branch 'winconditionHeartRatioTimeout' of SteamWar/FightSystem into master
Dieser Commit ist enthalten in:
Commit
4e328c8cc1
@ -77,6 +77,7 @@ public class Config {
|
||||
|
||||
//Active win conditions
|
||||
public static final boolean Timeout;
|
||||
public static final boolean HeartRatioTimeout;
|
||||
public static final boolean AllDead;
|
||||
public static final boolean CaptainDead;
|
||||
public static final boolean PercentSystem;
|
||||
@ -155,6 +156,7 @@ public class Config {
|
||||
TeamChatDetection = config.getString("Output.TeamChatDetection");
|
||||
|
||||
Timeout = config.getBoolean("WinConditions.Timeout");
|
||||
HeartRatioTimeout = config.getBoolean("WinConditions.HeartRatioTimeout");
|
||||
AllDead = config.getBoolean("WinConditions.AllDead");
|
||||
CaptainDead = config.getBoolean("WinConditions.CaptainDead");
|
||||
PercentSystem = config.getBoolean("WinConditions.PercentSystem");
|
||||
|
@ -37,6 +37,7 @@ Output:
|
||||
TeamChatDetection: +
|
||||
WinConditions:
|
||||
Timeout: boolean
|
||||
HeartRatioTimeout: boolean
|
||||
AllDead: boolean
|
||||
CaptainDead: boolean
|
||||
PercentSystem: boolean
|
||||
@ -53,10 +54,6 @@ WinConditionParams:
|
||||
- WATER
|
||||
- TNT
|
||||
- OBSIDIAN
|
||||
Money:
|
||||
Win: 0
|
||||
Lose: 0
|
||||
Draw: 0
|
||||
Kits:
|
||||
MemberDefault: default
|
||||
LeaderDefault: default
|
||||
|
@ -131,6 +131,7 @@ public class FightSystem extends JavaPlugin {
|
||||
setAllPlayersGM(GameMode.SURVIVAL);
|
||||
|
||||
new WinconditionTimeout();
|
||||
new WinconditionHeartRatioTimeout();
|
||||
new WinconditionEntern();
|
||||
new WinconditionTechKO();
|
||||
|
||||
|
@ -350,7 +350,7 @@ public class FightTeam implements IFightTeam{
|
||||
}
|
||||
}
|
||||
|
||||
public void replaceSync(boolean replace, Material target, Material replacement) {
|
||||
void replaceSync(boolean replace, Material target, Material replacement) {
|
||||
if(!replace)
|
||||
return;
|
||||
|
||||
@ -393,4 +393,19 @@ public class FightTeam implements IFightTeam{
|
||||
public Location getSpawn() {
|
||||
return spawn;
|
||||
}
|
||||
|
||||
public double getHeartRatio(){
|
||||
int maximumHearts = 0;
|
||||
double currentHearts = 0;
|
||||
for(FightPlayer fightPlayer : players){
|
||||
maximumHearts += 20;
|
||||
if(!fightPlayer.isLiving())
|
||||
continue;
|
||||
|
||||
currentHearts += fightPlayer.getPlayer().getHealth();
|
||||
}
|
||||
|
||||
assert maximumHearts != 0;
|
||||
return currentHearts / maximumHearts;
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,26 @@
|
||||
package de.steamwar.fightsystem.winconditions;
|
||||
|
||||
import de.steamwar.fightsystem.Config;
|
||||
import de.steamwar.fightsystem.FightSystem;
|
||||
import de.steamwar.fightsystem.countdown.TimeOverCountdown;
|
||||
import de.steamwar.fightsystem.fight.Fight;
|
||||
|
||||
public class WinconditionHeartRatioTimeout {
|
||||
|
||||
public WinconditionHeartRatioTimeout() {
|
||||
if(!Config.HeartRatioTimeout)
|
||||
return;
|
||||
|
||||
new TimeOverCountdown(() -> {
|
||||
double blueHeartRatio = Fight.getBlueTeam().getHeartRatio();
|
||||
double redHeartRatio = Fight.getRedTeam().getHeartRatio();
|
||||
|
||||
if(blueHeartRatio > redHeartRatio)
|
||||
FightSystem.setSpectateState(Fight.getBlueTeam());
|
||||
else if(blueHeartRatio < redHeartRatio)
|
||||
FightSystem.setSpectateState(Fight.getRedTeam());
|
||||
else
|
||||
FightSystem.setSpectateState(null);
|
||||
});
|
||||
}
|
||||
}
|
In neuem Issue referenzieren
Einen Benutzer sperren