Skip to content

Commit

Permalink
Araxxor adjustments (#6095)
Browse files Browse the repository at this point in the history
  • Loading branch information
nwjgit authored Oct 12, 2024
1 parent bf01cbc commit e50fe6f
Show file tree
Hide file tree
Showing 9 changed files with 83 additions and 54 deletions.
21 changes: 10 additions & 11 deletions docs/src/content/docs/osb/combat-achievements.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -259,9 +259,8 @@ Rewards can be claimed by simply using [[/ca claim]] after completing a new tier
| Abyssal Sire | Respiratory Runner | 1 in 10 chance per kill |
| Alchemical Hydra | Alchemical Veteran | 75x Alchemical Hydra KC |
| Araxxor | Araxxor Veteran | 25x Araxxor KC |
| Araxxor | Araxxor Speed-Trialist | 1 in 200 chance per kill |
| Araxxor | Relaxxor | 1 in 200 chance per kill |
| Araxxor | Relaxxor | 1 in 200 chance per kill |
| Araxxor | Araxxor Speed-Trialist | 1 in 1 chance per kill |
| Araxxor | Relaxxor | 1 in 10 chance per kill |
| Basilisk Knight | Reflecting on This Encounter | 1x Basilisk Knight KC |
| Callisto | Callisto Veteran | 20x Callisto KC |
| Cerberus | Ghost Buster | 1 in 10 chance per kill |
Expand Down Expand Up @@ -400,11 +399,11 @@ Rewards can be claimed by simply using [[/ca claim]] after completing a new tier
| Alchemical Hydra | Working Overtime | 15x Alchemical Hydra KC |
| Alchemical Hydra | The Flame Skipper | 1 in 25 chance per kill |
| Alchemical Hydra | Don't Flame Me | 1 in 25 chance per kill |
| Araxxor | Araxyte Betrayal | 1 in 250 chance per kill |
| Araxxor | Perfect Araxxor | 1 in 400 chance per kill |
| Araxxor | Let it seep in | 1 in 400 chance per kill |
| Araxxor | Arachnid Lover | 1 in 400 chance per kill |
| Araxxor | Araxxor Speed-Chaser | 1 in 400 chance per kill |
| Araxxor | Araxyte Betrayal | 1 in 25 chance per kill |
| Araxxor | Perfect Araxxor | 1 in 50 chance per kill |
| Araxxor | Let it seep in | 1 in 40 chance per kill |
| Araxxor | Arachnid Lover | 1 in 1 chance per kill |
| Araxxor | Araxxor Speed-Chaser | 1 in 1 chance per kill |
| Araxxor | Araxxor Master | 75x Araxxor KC |
| Cerberus | Arooo No More | 1 in 25 chance per kill |
| Cerberus | Cerberus Master | 150x Cerberus KC |
Expand Down Expand Up @@ -533,9 +532,9 @@ Rewards can be claimed by simply using [[/ca claim]] after completing a new tier
| -- | -- | -- |
| Alchemical Hydra | Alchemical Speed-Runner | 1 in 55 chance per kill |
| Alchemical Hydra | No Pressure | 1 in 33 chance per kill |
| Araxxor | Araxxor Speed-Runner | 1 in 500 chance per kill |
| Araxxor | Perfect Araxxor 2 | 1 in 1000 chance per kill |
| Araxxor | Swimming in Venom | 1 in 1000 chance per kill |
| Araxxor | Araxxor Speed-Runner | 1 in 1 chance per kill |
| Araxxor | Perfect Araxxor 2 | 1 in 200 chance per kill |
| Araxxor | Swimming in Venom | 1 in 50 chance per kill |
| Chambers of Xeric | Chambers of Xeric (5-Scale) Speed-Runner | 1 in 1 chance per kill |
| Chambers of Xeric | Chambers of Xeric Grandmaster | 150x Chambers of Xeric KC. |
| Chambers of Xeric | Chambers of Xeric (Solo) Speed-Runner | 1 in 1 chance per kill |
Expand Down
36 changes: 19 additions & 17 deletions src/lib/combat_achievements/elite.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { Monsters } from 'oldschooljs';

import { Time } from 'e';
import {
MIMIC_MONSTER_ID,
NEX_ID,
Expand All @@ -10,7 +11,13 @@ import {
} from '../constants';
import { SkillsEnum } from '../skilling/types';
import { Requirements } from '../structures/Requirements';
import type { ActivityTaskData, GauntletOptions, NightmareActivityTaskOptions, TOAOptions } from '../types/minions';
import type {
ActivityTaskData,
GauntletOptions,
MonsterActivityTaskOptions,
NightmareActivityTaskOptions,
TOAOptions
} from '../types/minions';
import { anyoneDiedInTOARaid } from '../util';
import { resolveItems } from '../util';
import { crossbows } from '../util/minionUtils';
Expand Down Expand Up @@ -1532,7 +1539,7 @@ export const eliteCombatAchievements: CombatAchievement[] = [
{
id: 1132,
name: 'Araxxor Veteran',
desc: 'Complete Wave 4 without taking avoidable damage from a Manticore.',
desc: 'Kill Araxxor 25 times.',
type: 'kill_count',
monster: 'Araxxor',
requirements: new Requirements().add({
Expand All @@ -1544,12 +1551,16 @@ export const eliteCombatAchievements: CombatAchievement[] = [
{
id: 1133,
name: 'Araxxor Speed-Trialist',
desc: 'Complete Wave 4 without taking avoidable damage from a Manticore.',
desc: 'Kill Araxxor 4 times in 10:00.',
type: 'speed',
monster: 'Araxxor',
rng: {
chancePerKill: 200,
hasChance: isCertainMonsterTrip(Monsters.Araxxor.id)
chancePerKill: 1,
hasChance: data => {
const qty = (data as MonsterActivityTaskOptions).q;
const timePerKill = data.duration / Time.Minute / qty;
return isCertainMonsterTrip(Monsters.Araxxor.id)(data) && qty >= 4 && timePerKill <= 2.5;
}
}
},
{
Expand All @@ -1559,21 +1570,12 @@ export const eliteCombatAchievements: CombatAchievement[] = [
type: 'restriction',
monster: 'Araxxor',
rng: {
chancePerKill: 200,
hasChance: isCertainMonsterTrip(Monsters.Araxxor.id)
}
},
{
id: 1135,
name: 'Relaxxor',
desc: 'Kill Araxxor after destroying six eggs.',
type: 'restriction',
monster: 'Araxxor',
rng: {
chancePerKill: 200,
chancePerKill: 10,
hasChance: isCertainMonsterTrip(Monsters.Araxxor.id)
}
},
// id: 1135
// This was a duplicate CA from Araxxor, don't use this id
{
id: 1136,
name: 'Rapid Reload',
Expand Down
13 changes: 9 additions & 4 deletions src/lib/combat_achievements/grandmaster.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import { Requirements } from '../structures/Requirements';
import type {
ActivityTaskData,
GauntletOptions,
MonsterActivityTaskOptions,
NexTaskOptions,
NightmareActivityTaskOptions,
RaidsOptions,
Expand Down Expand Up @@ -1130,8 +1131,12 @@ export const grandmasterCombatAchievements: CombatAchievement[] = [
type: 'speed',
monster: 'Araxxor',
rng: {
chancePerKill: 500,
hasChance: isCertainMonsterTrip(Monsters.Araxxor.id)
chancePerKill: 1,
hasChance: data => {
const qty = (data as MonsterActivityTaskOptions).q;
const timePerKill = data.duration / Time.Minute / qty;
return isCertainMonsterTrip(Monsters.Araxxor.id)(data) && qty >= 6 && timePerKill <= 1.66;
}
}
},
{
Expand All @@ -1141,7 +1146,7 @@ export const grandmasterCombatAchievements: CombatAchievement[] = [
type: 'perfection',
monster: 'Araxxor',
rng: {
chancePerKill: 1000,
chancePerKill: 200,
hasChance: isCertainMonsterTrip(Monsters.Araxxor.id)
}
},
Expand All @@ -1152,7 +1157,7 @@ export const grandmasterCombatAchievements: CombatAchievement[] = [
type: 'restriction',
monster: 'Araxxor',
rng: {
chancePerKill: 1000,
chancePerKill: 50,
hasChance: isCertainMonsterTrip(Monsters.Araxxor.id)
}
}
Expand Down
21 changes: 14 additions & 7 deletions src/lib/combat_achievements/master.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1535,7 +1535,7 @@ export const masterCombatAchievements: CombatAchievement[] = [
type: 'mechanical',
monster: 'Araxxor',
rng: {
chancePerKill: 250,
chancePerKill: 25,
hasChance: isCertainMonsterTrip(Monsters.Araxxor.id)
}
},
Expand All @@ -1546,7 +1546,7 @@ export const masterCombatAchievements: CombatAchievement[] = [
type: 'perfection',
monster: 'Araxxor',
rng: {
chancePerKill: 400,
chancePerKill: 50,
hasChance: isCertainMonsterTrip(Monsters.Araxxor.id)
}
},
Expand All @@ -1557,7 +1557,7 @@ export const masterCombatAchievements: CombatAchievement[] = [
type: 'restriction',
monster: 'Araxxor',
rng: {
chancePerKill: 400,
chancePerKill: 40,
hasChance: isCertainMonsterTrip(Monsters.Araxxor.id)
}
},
Expand All @@ -1568,8 +1568,11 @@ export const masterCombatAchievements: CombatAchievement[] = [
type: 'stamina',
monster: 'Araxxor',
rng: {
chancePerKill: 400,
hasChance: isCertainMonsterTrip(Monsters.Araxxor.id)
chancePerKill: 1,
hasChance: data => {
const qty = (data as MonsterActivityTaskOptions).q;
return isCertainMonsterTrip(Monsters.Araxxor.id)(data) && qty >= 10;
}
}
},
{
Expand All @@ -1579,8 +1582,12 @@ export const masterCombatAchievements: CombatAchievement[] = [
type: 'speed',
monster: 'Araxxor',
rng: {
chancePerKill: 400,
hasChance: isCertainMonsterTrip(Monsters.Araxxor.id)
chancePerKill: 1,
hasChance: data => {
const qty = (data as MonsterActivityTaskOptions).q;
const timePerKill = data.duration / Time.Minute / qty;
return isCertainMonsterTrip(Monsters.Araxxor.id)(data) && qty >= 5 && timePerKill <= 2;
}
}
},
{
Expand Down
26 changes: 19 additions & 7 deletions src/lib/minions/data/killableMonsters/bosses/misc.ts
Original file line number Diff line number Diff line change
Expand Up @@ -574,6 +574,7 @@ const killableBosses: KillableMonster[] = [
timeToFinish: Time.Minute * 3,
respawnTime: 2000,
table: Monsters.Araxxor,
difficultyRating: 8,
notifyDrops: resolveItems(['Nid']),
qpRequired: 200,
deathProps: {
Expand Down Expand Up @@ -704,14 +705,25 @@ const killableBosses: KillableMonster[] = [
if (loot.has('Coagulated venom') && (ownedItems.has('Coagulated venom') || ownedItems.has('Rax'))) {
loot.set('Coagulated venom', 0);
}

const noxPieces = resolveItems(['Noxious point', 'Noxious blade', 'Noxious pommel']);
const ownedPieces = noxPieces.filter(p => cl.has(p));
if (ownedPieces.length === 3) return;
const unownedPieces = noxPieces.filter(p => !cl.has(p));
const pieceToReplace = ownedPieces.find(p => loot.has(p));
if (!pieceToReplace) return;
loot.set(unownedPieces[0], 1);
loot.set(pieceToReplace, 0);
const ownedCount = noxPieces.map(o => cl.amount(o));
const lootCount = noxPieces.map(l => loot.amount(l));

for (let i = 0; i < lootCount.length; i++) {
while (lootCount[i] > 0) {
const sortedPieces = noxPieces
.map((piece, index) => ({ piece, owned: ownedCount[index] }))
.sort((a, b) => a.owned - b.owned);

const targetPiece = sortedPieces[0].piece;
loot.set(targetPiece, (loot.amount(targetPiece) || 0) + 1);
loot.set(noxPieces[i], loot.amount(noxPieces[i]) - 1);

ownedCount[noxPieces.indexOf(targetPiece)]++;
lootCount[i]--;
}
}
},
itemCost: [
{
Expand Down
16 changes: 8 additions & 8 deletions src/lib/slayer/tasks/bossTasks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -232,6 +232,14 @@ export const bossTasks: AssignableSlayerTask[] = [
questPoints: 75,
monsters: [Monsters.Zulrah.id],
isBoss: true
},
{
monster: Monsters.Araxxor,
amount: [3, 35],
weight: 1,
monsters: [Monsters.Araxxor.id],
isBoss: true,
wilderness: true
}
];

Expand Down Expand Up @@ -291,13 +299,5 @@ export const wildernessBossTasks: AssignableSlayerTask[] = [
monsters: [Monsters.Vetion.id, Monsters.Calvarion.id],
isBoss: true,
wilderness: true
},
{
monster: Monsters.Araxxor,
amount: [3, 35],
weight: 1,
monsters: [Monsters.Araxxor.id],
isBoss: true,
wilderness: true
}
];
2 changes: 2 additions & 0 deletions src/lib/slayer/tasks/duradelTasks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -469,6 +469,8 @@ export const duradelTasks: AssignableSlayerTask[] = [
{
monster: Monsters.Araxyte,
amount: [60, 80],
extendedAmount: [200, 250],
extendedUnlockId: SlayerTaskUnlocksEnum.MoreEyesThanSense,
weight: 10,
monsters: [Monsters.Araxyte.id, Monsters.Araxxor.id],
combatLevel: 96,
Expand Down
2 changes: 2 additions & 0 deletions src/lib/slayer/tasks/nieveTasks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -443,6 +443,8 @@ export const nieveTasks: AssignableSlayerTask[] = [
{
monster: Monsters.Araxyte,
amount: [40, 60],
extendedAmount: [200, 250],
extendedUnlockId: SlayerTaskUnlocksEnum.MoreEyesThanSense,
weight: 8,
monsters: [Monsters.Araxyte.id, Monsters.Araxxor.id],
combatLevel: 96,
Expand Down
Binary file modified tests/unit/snapshots/cl.OSB.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit e50fe6f

Please sign in to comment.