From 8ef56a6465adbdcf896aef56dc071b49ddb81e30 Mon Sep 17 00:00:00 2001 From: Sam Marder Date: Sun, 26 Apr 2026 11:03:02 -0400 Subject: [PATCH 1/3] Grant achievement for finishing barbarian agility course --- .../skill/agility/BarbarianOutpostCourse.kt | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/Server/src/main/content/global/skill/agility/BarbarianOutpostCourse.kt b/Server/src/main/content/global/skill/agility/BarbarianOutpostCourse.kt index 0e4a36fea..447f5d8de 100644 --- a/Server/src/main/content/global/skill/agility/BarbarianOutpostCourse.kt +++ b/Server/src/main/content/global/skill/agility/BarbarianOutpostCourse.kt @@ -1,21 +1,25 @@ package content.global.skill.agility -import core.api.* +import content.region.fremennik.diary.FremennikAchievementDiary +import content.region.kandarin.barcrawl.BarcrawlManager +import core.api.sendMessage import core.cache.def.impl.ItemDefinition import core.cache.def.impl.NPCDefinition import core.cache.def.impl.SceneryDefinition -import content.region.kandarin.barcrawl.BarcrawlManager +import core.game.diary.DiaryLevel import core.game.node.Node -import core.game.node.scenery.Scenery import core.game.node.entity.combat.ImpactHandler.HitsplatType import core.game.node.entity.player.Player +import core.game.node.entity.player.link.diary.DiaryType +import core.game.node.entity.skill.Skills +import core.game.node.scenery.Scenery import core.game.system.task.Pulse +import core.game.world.GameWorld import core.game.world.map.Location import core.game.world.update.flag.context.Animation import core.game.world.update.flag.context.Graphics -import core.plugin.Initializable -import core.game.world.GameWorld import core.plugin.ClassScanner +import core.plugin.Initializable /** * Handles the barbarian outpost course. @@ -188,6 +192,18 @@ class BarbarianOutpostCourse return null } + override fun finish() { + if (isCompleted()) { + player.achievementDiaryManager.finishTask( + player, + DiaryType.FREMENNIK, + DiaryLevel.MEDIUM.ordinal, + FremennikAchievementDiary.Companion.HardTasks.COMPLETE_BARBARIAN_OUTPOST_AGILITY_COURSE + ) + } + super.finish() + } + /** * The barbarian guard dialogue plugin. * @author Woah From 184aeaa5868a501a784eda7efa3cfab39b25ecdf Mon Sep 17 00:00:00 2001 From: Sam Marder Date: Sun, 26 Apr 2026 11:23:10 -0400 Subject: [PATCH 2/3] Grant achievement for barbarian pyre ship --- .../region/morytania/handlers/PyreSitePlugin.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Server/src/main/content/region/morytania/handlers/PyreSitePlugin.java b/Server/src/main/content/region/morytania/handlers/PyreSitePlugin.java index d21b400da..283348660 100644 --- a/Server/src/main/content/region/morytania/handlers/PyreSitePlugin.java +++ b/Server/src/main/content/region/morytania/handlers/PyreSitePlugin.java @@ -1,6 +1,8 @@ package content.region.morytania.handlers; +import content.region.fremennik.diary.FremennikAchievementDiary.Companion.HardTasks; import core.cache.def.impl.SceneryDefinition; +import core.game.diary.DiaryLevel; import core.game.interaction.OptionHandler; import core.game.node.Node; import core.game.node.entity.Entity; @@ -9,6 +11,7 @@ import core.game.node.entity.npc.AbstractNPC; import core.game.node.entity.npc.NPC; import core.game.node.entity.npc.drop.DropFrequency; import core.game.node.entity.player.Player; +import core.game.node.entity.player.link.diary.DiaryType; import core.game.node.entity.skill.Skills; import content.global.skill.firemaking.Log; import content.data.skill.SkillingTool; @@ -100,6 +103,12 @@ public final class PyreSitePlugin extends OptionHandler { return true; } player.setAttribute("logType", type); + player.getAchievementDiaryManager().finishTask( + player, + DiaryType.FREMENNIK, + DiaryLevel.MEDIUM.ordinal(), + HardTasks.MAKE_BARBARIAN_PYRE_SHIP_ARCTIC_PINE + ); ritual(player, node.asScenery()); return true; } From b6cf288d80acf4231339a255bfe8594dc0096512 Mon Sep 17 00:00:00 2001 From: Sam Marder Date: Sun, 26 Apr 2026 14:29:29 -0400 Subject: [PATCH 3/3] Don't use DiaryLevel --- .../main/content/global/skill/agility/BarbarianOutpostCourse.kt | 2 +- .../main/content/region/morytania/handlers/PyreSitePlugin.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Server/src/main/content/global/skill/agility/BarbarianOutpostCourse.kt b/Server/src/main/content/global/skill/agility/BarbarianOutpostCourse.kt index 447f5d8de..b5e8a1962 100644 --- a/Server/src/main/content/global/skill/agility/BarbarianOutpostCourse.kt +++ b/Server/src/main/content/global/skill/agility/BarbarianOutpostCourse.kt @@ -197,7 +197,7 @@ class BarbarianOutpostCourse player.achievementDiaryManager.finishTask( player, DiaryType.FREMENNIK, - DiaryLevel.MEDIUM.ordinal, + 2, FremennikAchievementDiary.Companion.HardTasks.COMPLETE_BARBARIAN_OUTPOST_AGILITY_COURSE ) } diff --git a/Server/src/main/content/region/morytania/handlers/PyreSitePlugin.java b/Server/src/main/content/region/morytania/handlers/PyreSitePlugin.java index 283348660..03485f1b9 100644 --- a/Server/src/main/content/region/morytania/handlers/PyreSitePlugin.java +++ b/Server/src/main/content/region/morytania/handlers/PyreSitePlugin.java @@ -106,7 +106,7 @@ public final class PyreSitePlugin extends OptionHandler { player.getAchievementDiaryManager().finishTask( player, DiaryType.FREMENNIK, - DiaryLevel.MEDIUM.ordinal(), + 2, HardTasks.MAKE_BARBARIAN_PYRE_SHIP_ARCTIC_PINE ); ritual(player, node.asScenery());