mirror of
https://github.com/Melledy/LunarCore.git
synced 2025-12-15 14:54:43 +01:00
Set starting health and energy for avatars before starting a challenge
This commit is contained in:
@@ -5,7 +5,6 @@ import emu.lunarcore.data.config.GroupInfo;
|
|||||||
import emu.lunarcore.data.config.MonsterInfo;
|
import emu.lunarcore.data.config.MonsterInfo;
|
||||||
import emu.lunarcore.data.excel.ChallengeExcel;
|
import emu.lunarcore.data.excel.ChallengeExcel;
|
||||||
import emu.lunarcore.data.excel.NpcMonsterExcel;
|
import emu.lunarcore.data.excel.NpcMonsterExcel;
|
||||||
import emu.lunarcore.game.avatar.GameAvatar;
|
|
||||||
import emu.lunarcore.game.battle.Battle;
|
import emu.lunarcore.game.battle.Battle;
|
||||||
import emu.lunarcore.game.player.Player;
|
import emu.lunarcore.game.player.Player;
|
||||||
import emu.lunarcore.game.scene.Scene;
|
import emu.lunarcore.game.scene.Scene;
|
||||||
@@ -124,14 +123,11 @@ public class ChallengeData {
|
|||||||
public void onBattleFinish(Battle battle, BattleEndStatus result, BattleStatistics stats) {
|
public void onBattleFinish(Battle battle, BattleEndStatus result, BattleStatistics stats) {
|
||||||
if (result == BattleEndStatus.BATTLE_END_WIN) {
|
if (result == BattleEndStatus.BATTLE_END_WIN) {
|
||||||
// Check if any avatar in the lineup has died
|
// Check if any avatar in the lineup has died
|
||||||
for (int avatarId : player.getCurrentLineup().getAvatars()) {
|
player.getCurrentLineup().forEachAvatar(avatar -> {
|
||||||
GameAvatar avatar = player.getAvatarById(avatarId);
|
|
||||||
if (avatar == null) continue;
|
|
||||||
|
|
||||||
if (!avatar.isAlive()) {
|
if (!avatar.isAlive()) {
|
||||||
this.hasAvatarDied = true;
|
hasAvatarDied = true;
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
|
|
||||||
// Get monster count in stage
|
// Get monster count in stage
|
||||||
long monsters = player.getScene().getEntities().values().stream().filter(e -> e instanceof EntityMonster).count();
|
long monsters = player.getScene().getEntities().values().stream().filter(e -> e instanceof EntityMonster).count();
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ import java.util.stream.Stream;
|
|||||||
import emu.lunarcore.LunarRail;
|
import emu.lunarcore.LunarRail;
|
||||||
import emu.lunarcore.data.GameData;
|
import emu.lunarcore.data.GameData;
|
||||||
import emu.lunarcore.data.excel.ChallengeExcel;
|
import emu.lunarcore.data.excel.ChallengeExcel;
|
||||||
import emu.lunarcore.game.avatar.GameAvatar;
|
|
||||||
import emu.lunarcore.game.player.BasePlayerManager;
|
import emu.lunarcore.game.player.BasePlayerManager;
|
||||||
import emu.lunarcore.game.player.Player;
|
import emu.lunarcore.game.player.Player;
|
||||||
import emu.lunarcore.game.player.PlayerLineup;
|
import emu.lunarcore.game.player.PlayerLineup;
|
||||||
@@ -34,20 +33,27 @@ public class ChallengeManager extends BasePlayerManager {
|
|||||||
|
|
||||||
// Sanity check lineups
|
// Sanity check lineups
|
||||||
if (excel.getStageNum() >= 1) {
|
if (excel.getStageNum() >= 1) {
|
||||||
|
// Get lineup
|
||||||
PlayerLineup lineup = getPlayer().getLineupManager().getLineupByIndex(0, ExtraLineupType.LINEUP_CHALLENGE_VALUE);
|
PlayerLineup lineup = getPlayer().getLineupManager().getLineupByIndex(0, ExtraLineupType.LINEUP_CHALLENGE_VALUE);
|
||||||
// Make sure this lineup has avatars set
|
// Make sure this lineup has avatars set
|
||||||
if (lineup.getAvatars().size() == 0) {
|
if (lineup.getAvatars().size() == 0) return;
|
||||||
return;
|
// Reset hp/sp
|
||||||
}
|
lineup.forEachAvatar(avatar -> {
|
||||||
|
avatar.setCurrentHp(10000);
|
||||||
|
avatar.setCurrentSp(avatar.getMaxSp() / 2);
|
||||||
|
});
|
||||||
// Set technique points
|
// Set technique points
|
||||||
lineup.setMp(5);
|
lineup.setMp(5);
|
||||||
}
|
}
|
||||||
if (excel.getStageNum() >= 2) {
|
if (excel.getStageNum() >= 2) {
|
||||||
PlayerLineup lineup = getPlayer().getLineupManager().getLineupByIndex(0, ExtraLineupType.LINEUP_CHALLENGE_2_VALUE);
|
PlayerLineup lineup = getPlayer().getLineupManager().getLineupByIndex(0, ExtraLineupType.LINEUP_CHALLENGE_2_VALUE);
|
||||||
// Make sure this lineup has avatars set
|
// Make sure this lineup has avatars set
|
||||||
if (lineup.getAvatars().size() == 0) {
|
if (lineup.getAvatars().size() == 0) return;
|
||||||
return;
|
// Reset hp/sp
|
||||||
}
|
lineup.forEachAvatar(avatar -> {
|
||||||
|
avatar.setCurrentHp(10000);
|
||||||
|
avatar.setCurrentSp(avatar.getMaxSp() / 2);
|
||||||
|
});
|
||||||
// Set technique points
|
// Set technique points
|
||||||
lineup.setMp(5);
|
lineup.setMp(5);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package emu.lunarcore.game.player;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
import dev.morphia.annotations.Entity;
|
import dev.morphia.annotations.Entity;
|
||||||
import emu.lunarcore.GameConstants;
|
import emu.lunarcore.GameConstants;
|
||||||
@@ -120,6 +121,15 @@ public class PlayerLineup {
|
|||||||
getOwner().sendPacket(new PacketSyncLineupNotify(this));
|
getOwner().sendPacket(new PacketSyncLineupNotify(this));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void forEachAvatar(Consumer<GameAvatar> consumer) {
|
||||||
|
for (int avatarId : this.getAvatars()) {
|
||||||
|
GameAvatar avatar = this.getOwner().getAvatarById(avatarId);
|
||||||
|
if (avatar == null) continue;
|
||||||
|
|
||||||
|
consumer.accept(avatar);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public LineupInfo toProto() {
|
public LineupInfo toProto() {
|
||||||
var proto = LineupInfo.newInstance()
|
var proto = LineupInfo.newInstance()
|
||||||
|
|||||||
Reference in New Issue
Block a user