diff --git a/src/lib/minions/data/killableMonsters/low.ts b/src/lib/minions/data/killableMonsters/low.ts index 402aa44eac..3d0bbd7ccb 100644 --- a/src/lib/minions/data/killableMonsters/low.ts +++ b/src/lib/minions/data/killableMonsters/low.ts @@ -280,7 +280,9 @@ const killableMonsters: KillableMonster[] = [ healAmountNeeded: 200, attackStyleToUse: GearStat.AttackCrush, attackStylesUsed: [GearStat.AttackCrush], - requiredQuests: [QuestID.ThePathOfGlouphrie] + requiredQuests: [QuestID.ThePathOfGlouphrie], + customMonsterHP: 150, + canCannon: true }, { id: Monsters.WarpedTortoise.id, @@ -291,7 +293,8 @@ const killableMonsters: KillableMonster[] = [ healAmountNeeded: 200, attackStyleToUse: GearStat.AttackCrush, attackStylesUsed: [GearStat.AttackCrush], - requiredQuests: [QuestID.ThePathOfGlouphrie] + requiredQuests: [QuestID.ThePathOfGlouphrie], + canCannon: true } ]; diff --git a/src/lib/slayer/slayerUnlocks.ts b/src/lib/slayer/slayerUnlocks.ts index a715e0bf2c..a632f48ed6 100644 --- a/src/lib/slayer/slayerUnlocks.ts +++ b/src/lib/slayer/slayerUnlocks.ts @@ -599,6 +599,7 @@ export const SlayerRewardsShop: SlayerTaskUnlocks[] = [ name: 'Warped Reality', desc: 'Konar, Duradel, Nieve, and Chaeldar will be able to assign warped creatures as your task.', slayerPointCost: 60, + canBeRemoved: true, aliases: ['warped reality'] } ]; diff --git a/src/lib/slayer/slayerUtil.ts b/src/lib/slayer/slayerUtil.ts index 33998387fe..fad60638f2 100644 --- a/src/lib/slayer/slayerUtil.ts +++ b/src/lib/slayer/slayerUtil.ts @@ -143,6 +143,7 @@ function userCanUseTask(user: MUser, task: AssignableSlayerTask, master: SlayerM if (myLastTask === task.monster.id) return false; if (task.combatLevel && task.combatLevel > user.combatLevel) return false; if (task.questPoints && task.questPoints > user.QP) return false; + if (task.requiredQuests?.find(quest => !user.user.finished_quest_ids.includes(quest))) return false; if (task.slayerLevel && task.slayerLevel > user.skillLevel(SkillsEnum.Slayer)) return false; if (task.levelRequirements && !user.hasSkillReqs(task.levelRequirements)) return false; const myBlockList = user.user.slayer_blocked_ids ?? []; @@ -191,7 +192,7 @@ function userCanUseTask(user: MUser, task: AssignableSlayerTask, master: SlayerM ) return false; - if (stringMatches(lmon, 'warped tortoise') && !myUnlocks.includes(SlayerTaskUnlocksEnum.WarpedReality)) + if (stringMatches(lmon, 'warped terrorbird') && !myUnlocks.includes(SlayerTaskUnlocksEnum.WarpedReality)) return false; return true; } diff --git a/src/lib/slayer/tasks/chaeldarTasks.ts b/src/lib/slayer/tasks/chaeldarTasks.ts index 9ee1be46dc..7d4993e614 100644 --- a/src/lib/slayer/tasks/chaeldarTasks.ts +++ b/src/lib/slayer/tasks/chaeldarTasks.ts @@ -2,6 +2,7 @@ import { Monsters } from 'oldschooljs'; import { KalphiteKingMonster } from '../../minions/data/killableMonsters/custom/bosses/KalphiteKing'; import { BSOMonsters } from '../../minions/data/killableMonsters/custom/customMonsters'; +import { QuestID } from '../../minions/data/quests'; import { SlayerTaskUnlocksEnum } from '../slayerUnlocks'; import type { AssignableSlayerTask } from '../types'; import { bossTasks } from './bossTasks'; @@ -409,7 +410,9 @@ export const chaeldarTasks: AssignableSlayerTask[] = [ amount: [70, 130], weight: 6, monsters: [Monsters.WarpedTerrorbird.id, Monsters.WarpedTortoise.id], - unlocked: false + unlocked: false, + slayerLevel: 56, + requiredQuests: [QuestID.ThePathOfGlouphrie] }, ...bossTasks ]; diff --git a/src/lib/slayer/tasks/duradelTasks.ts b/src/lib/slayer/tasks/duradelTasks.ts index 8b25a5b9e3..f739fdb8aa 100644 --- a/src/lib/slayer/tasks/duradelTasks.ts +++ b/src/lib/slayer/tasks/duradelTasks.ts @@ -7,6 +7,7 @@ import { BSOMonsters } from '../../minions/data/killableMonsters/custom/customMo import { SlayerTaskUnlocksEnum } from '../slayerUnlocks'; import type { AssignableSlayerTask } from '../types'; import { bossTasks } from './bossTasks'; +import { QuestID } from '../../minions/data/quests'; export const duradelTasks: AssignableSlayerTask[] = [ { @@ -484,7 +485,9 @@ export const duradelTasks: AssignableSlayerTask[] = [ amount: [130, 200], weight: 8, monsters: [Monsters.WarpedTerrorbird.id, Monsters.WarpedTortoise.id], - unlocked: false + unlocked: false, + slayerLevel: 56, + requiredQuests: [QuestID.ThePathOfGlouphrie] }, ...bossTasks ]; diff --git a/src/lib/slayer/tasks/konarTasks.ts b/src/lib/slayer/tasks/konarTasks.ts index 90f622f801..ec790298f2 100644 --- a/src/lib/slayer/tasks/konarTasks.ts +++ b/src/lib/slayer/tasks/konarTasks.ts @@ -7,6 +7,7 @@ import { BSOMonsters } from '../../minions/data/killableMonsters/custom/customMo import { SlayerTaskUnlocksEnum } from '../slayerUnlocks'; import type { AssignableSlayerTask } from '../types'; import { bossTasks } from './bossTasks'; +import { QuestID } from '../../minions/data/quests'; export const konarTasks: AssignableSlayerTask[] = [ { @@ -458,7 +459,9 @@ export const konarTasks: AssignableSlayerTask[] = [ amount: [110, 170], weight: 4, monsters: [Monsters.WarpedTerrorbird.id, Monsters.WarpedTortoise.id], - unlocked: false + unlocked: false, + slayerLevel: 56, + requiredQuests: [QuestID.ThePathOfGlouphrie] }, ...bossTasks ]; diff --git a/src/lib/slayer/tasks/nieveTasks.ts b/src/lib/slayer/tasks/nieveTasks.ts index cfb27bf777..f33a10bc93 100644 --- a/src/lib/slayer/tasks/nieveTasks.ts +++ b/src/lib/slayer/tasks/nieveTasks.ts @@ -8,6 +8,7 @@ import { SlayerTaskUnlocksEnum } from '../slayerUnlocks'; import type { AssignableSlayerTask } from '../types'; import { bossTasks } from './bossTasks'; import { polyporeTasks } from './polyporeTasks'; +import { QuestID } from '../../minions/data/quests'; export const nieveTasks: AssignableSlayerTask[] = [ { @@ -506,7 +507,9 @@ export const nieveTasks: AssignableSlayerTask[] = [ amount: [120, 185], weight: 6, monsters: [Monsters.WarpedTerrorbird.id, Monsters.WarpedTortoise.id], - unlocked: false + unlocked: false, + slayerLevel: 56, + requiredQuests: [QuestID.ThePathOfGlouphrie] }, ...bossTasks ]; diff --git a/src/lib/slayer/types.ts b/src/lib/slayer/types.ts index ba18c607cc..c8a405bc04 100644 --- a/src/lib/slayer/types.ts +++ b/src/lib/slayer/types.ts @@ -1,5 +1,6 @@ import type { Item, Monster, MonsterSlayerMaster } from 'oldschooljs'; +import type { QuestID } from '../minions/data/quests'; import type { LevelRequirements } from '../skilling/types'; export interface AssignableSlayerTask { @@ -18,6 +19,7 @@ export interface AssignableSlayerTask { extendedUnlockId?: number; wilderness?: boolean; dungeoneeringLevel?: number; + requiredQuests?: QuestID[]; } export interface SlayerMaster { diff --git a/src/mahoji/lib/abstracted_commands/autoSlayCommand.ts b/src/mahoji/lib/abstracted_commands/autoSlayCommand.ts index 78c1ce482c..3568c0fad3 100644 --- a/src/mahoji/lib/abstracted_commands/autoSlayCommand.ts +++ b/src/mahoji/lib/abstracted_commands/autoSlayCommand.ts @@ -214,6 +214,12 @@ const AutoSlayMaxEfficiencyTable: AutoslayLink[] = [ efficientName: Monsters.RevenantDemon.name, efficientMonster: Monsters.RevenantDemon.id, efficientMethod: 'none' + }, + { + monsterID: Monsters.WarpedTerrorbird.id, + efficientName: Monsters.WarpedTerrorbird.name, + efficientMonster: Monsters.WarpedTerrorbird.id, + efficientMethod: 'cannon' } ];