Merge branch 'frem-achievements' into 'master'

Draft: Implement some Fremennik hard achievements

See merge request 2009scape/2009scape!2345
This commit is contained in:
Sam Marder 2026-08-01 09:54:14 +00:00
commit 4ea6901e3f
2 changed files with 30 additions and 5 deletions

View file

@ -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,
2,
FremennikAchievementDiary.Companion.HardTasks.COMPLETE_BARBARIAN_OUTPOST_AGILITY_COURSE
)
}
super.finish()
}
/**
* The barbarian guard dialogue plugin.
* @author Woah

View file

@ -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,
2,
HardTasks.MAKE_BARBARIAN_PYRE_SHIP_ARCTIC_PINE
);
ritual(player, node.asScenery());
return true;
}