diff --git a/src/main/java/emu/lunarcore/game/battle/BattleService.java b/src/main/java/emu/lunarcore/game/battle/BattleService.java index 9fac6be..adf39c8 100644 --- a/src/main/java/emu/lunarcore/game/battle/BattleService.java +++ b/src/main/java/emu/lunarcore/game/battle/BattleService.java @@ -205,6 +205,9 @@ public class BattleService extends BaseGameService { case BATTLE_END_WIN -> { // Remove monsters from the map - Could optimize it a little better for (var monster : battle.getNpcMonsters()) { + // Dont remove farmable monsters from the scene when they are defeated + if (monster.isFarmElement()) continue; + // Remove monster player.getScene().removeEntity(monster); } // Drops diff --git a/src/main/java/emu/lunarcore/game/scene/entity/EntityMonster.java b/src/main/java/emu/lunarcore/game/scene/entity/EntityMonster.java index e688a0b..9904140 100644 --- a/src/main/java/emu/lunarcore/game/scene/entity/EntityMonster.java +++ b/src/main/java/emu/lunarcore/game/scene/entity/EntityMonster.java @@ -26,6 +26,8 @@ public class EntityMonster implements GameEntity { private final Position pos; private final Position rot; + private int farmElementId; + public EntityMonster(Scene scene, NpcMonsterExcel excel, GroupInfo group, MonsterInfo monsterInfo) { this.scene = scene; this.excel = excel; @@ -33,6 +35,11 @@ public class EntityMonster implements GameEntity { this.rot = monsterInfo.getRot().clone(); this.groupId = group.getId(); this.instId = monsterInfo.getID(); + this.farmElementId = monsterInfo.getFarmElementID(); + } + + public boolean isFarmElement() { + return this.farmElementId > 0; } public int getStageId() {