diff --git a/AndorsTrail/res/raw/conversationlist_farrik.json b/AndorsTrail/res/raw/conversationlist_farrik.json index aa026b993..92b4b5cac 100644 --- a/AndorsTrail/res/raw/conversationlist_farrik.json +++ b/AndorsTrail/res/raw/conversationlist_farrik.json @@ -374,6 +374,11 @@ "rewardType": "questProgress", "rewardID": "farrik", "value": 70 + }, + { + "rewardType": "removeSpawnArea", + "mapName": "fallhaven_prison", + "rewardID": "fallhaven_prisoner" } ], "replies": [ diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/savegames/LegacySavegameFormatReaderForPlayer.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/savegames/LegacySavegameFormatReaderForPlayer.java index d9b2709a8..52289ebf8 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/savegames/LegacySavegameFormatReaderForPlayer.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/savegames/LegacySavegameFormatReaderForPlayer.java @@ -9,6 +9,8 @@ import com.gpl.rpg.AndorsTrail.model.ability.SkillInfo; import com.gpl.rpg.AndorsTrail.model.actor.Player; import com.gpl.rpg.AndorsTrail.model.item.Inventory; import com.gpl.rpg.AndorsTrail.model.item.ItemType; +import com.gpl.rpg.AndorsTrail.model.map.MonsterSpawnArea; +import com.gpl.rpg.AndorsTrail.model.map.PredefinedMap; import com.gpl.rpg.AndorsTrail.model.quest.QuestProgress; import com.gpl.rpg.AndorsTrail.util.Range; @@ -103,6 +105,20 @@ public final class LegacySavegameFormatReaderForPlayer { player.addQuestProgress(new QuestProgress("lodar13_rest", 65)); } } + + if (fileversion <= 40) { + if (player.hasExactQuestProgress("farrik", 70)) { + deactivateSpawnArea(world, controllers, "fallhaven_prison", "fallhaven_prisoner"); + } + } + } + + private static void deactivateSpawnArea(WorldContext world, ControllerContext controllers, String mapName, String monsterTypeSpawnGroup) { + PredefinedMap map = world.maps.findPredefinedMap("fallhaven_prison"); + for (MonsterSpawnArea area : map.spawnAreas) { + if (!area.monsterTypeSpawnGroup.equals("fallhaven_prisoner")) continue; + controllers.monsterSpawnController.deactivateSpawnArea(area, true); + } } public static int getExpectedNumberOfSkillpointsForLevel(int level) {