Skip to content

Commit

Permalink
Celestara, Zygomites, Testershop (#5744)
Browse files Browse the repository at this point in the history
  • Loading branch information
gc authored Mar 6, 2024
1 parent 22c74c6 commit 52cc2cc
Show file tree
Hide file tree
Showing 27 changed files with 663 additions and 169 deletions.
8 changes: 7 additions & 1 deletion src/lib/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -325,7 +325,8 @@ export enum BitField {
HasIncandescentBoon = 224,
HasVibrantBoon = 225,
HasAncientBoon = 226,
DisabledTameClueOpening = 227
DisabledTameClueOpening = 227,
HasMoondashCharm = 228
}

interface BitFieldData {
Expand Down Expand Up @@ -528,6 +529,11 @@ export const BitFieldData: Record<BitField, BitFieldData> = {
name: 'Disable Wilderness High Peak Time Warning',
protected: false,
userConfigurable: true
},
[BitField.HasMoondashCharm]: {
name: 'Used Moondash Charm',
protected: false,
userConfigurable: true
}
} as const;

Expand Down
84 changes: 73 additions & 11 deletions src/lib/customItems/customItems.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11186,17 +11186,7 @@ setCustomItem(
1
);

setCustomItem(
73_077,
'Moonlight mutator',
'Coal',
{
customItemData: {
cantDropFromMysteryBoxes: true
}
},
1
);
// 73_077 Moonlight mutator

setCustomItem(
73_078,
Expand Down Expand Up @@ -11521,3 +11511,75 @@ setCustomItem(
},
1
);

setCustomItem(
73_105,
'Moondash charm',
'Coal',
{
customItemData: {
cantDropFromMysteryBoxes: true
}
},
1
);

setCustomItem(
73_106,
'Herbal zygomite spores',
'Coal',
{
customItemData: {
cantDropFromMysteryBoxes: true
}
},
1
);

setCustomItem(
73_107,
'Barky zygomite spores',
'Coal',
{
customItemData: {
cantDropFromMysteryBoxes: true
}
},
1
);

setCustomItem(
73_109,
'Fruity zygomite spores',
'Coal',
{
customItemData: {
cantDropFromMysteryBoxes: true
}
},
1
);

setCustomItem(
73_110,
'Moonlight essence',
'Coal',
{
customItemData: {
cantDropFromMysteryBoxes: true
}
},
1
);

setCustomItem(
73_111,
'Fungo',
'Herbi',
{
customItemData: {
cantDropFromMysteryBoxes: true
}
},
1
);
1 change: 1 addition & 0 deletions src/lib/customItems/invention/inventions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,3 +33,4 @@ addInvention(63_326, 'RoboFlappy');
addInvention(73_039, 'Wisp-buster', 'Bronze dagger');
addInvention(73_042, 'Divine hand', 'Bronze dagger');
addInvention(73_055, 'Drygore axe', 'Bronze dagger');
addInvention(73_077, 'Moonlight mutator');
6 changes: 6 additions & 0 deletions src/lib/data/Collections.ts
Original file line number Diff line number Diff line change
Expand Up @@ -821,6 +821,12 @@ export const allCollectionLogs: ICollection = {
allItems: BSOMonsters.Solis.allItems,
items: BSOMonsters.Solis.allItems!,
fmtProg: kcProg(BSOMonsters.Solis.id)
},
Celestara: {
alias: ['celestara'],
allItems: BSOMonsters.Celestara.allItems,
items: BSOMonsters.Celestara.allItems!,
fmtProg: kcProg(BSOMonsters.Celestara.id)
}
}
},
Expand Down
3 changes: 2 additions & 1 deletion src/lib/data/CollectionsExport.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2433,7 +2433,8 @@ export const customPetsCL = resolveItems([
'Crush',
'Herbert',
'Echo',
'Doopy'
'Doopy',
'Fungo'
]);

export const discontinuedCustomPetsCL = resolveItems([
Expand Down
9 changes: 9 additions & 0 deletions src/lib/data/globalDroprates.ts
Original file line number Diff line number Diff line change
Expand Up @@ -116,5 +116,14 @@ export const globalDroprates = {
rolledPer: 'kill',
notes: ['Received from killing Vladimir Drakan'],
item: getOSItem('Echo')
},
fungo: {
name: 'Fungo (pet)',
baseRate: 50,
clIncrease: 1.5,
minLength: false,
rolledPer: 'harvest',
notes: ['Received from harvesting any planted zygomite'],
item: getOSItem('Fungo')
}
};
8 changes: 7 additions & 1 deletion src/lib/data/similarItems.ts
Original file line number Diff line number Diff line change
Expand Up @@ -434,7 +434,13 @@ const source: [string, (string | number)[]][] = [
['Lumberjack boots', ['Forestry boots']],
['Abyssal jibwings', ['Abyssal jibwings (e)']],
['3rd age jibwings', ['3rd age jibwings (e)']],
['Demonic jibwings', ['Demonic jibwings (e)']]
['Demonic jibwings', ['Demonic jibwings (e)']],

['Completionist cape', ['Completionist cape (t)']],
["Combatant's cape", ['Completionist cape', 'Completionist cape (t)']],
["Gatherer's cape", ['Completionist cape', 'Completionist cape (t)']],
['Support cape', ['Completionist cape', 'Completionist cape (t)']],
["Artisan's cape", ['Completionist cape', 'Completionist cape (t)']]
];

// Make max cape count as all master capes
Expand Down
17 changes: 16 additions & 1 deletion src/lib/invention/inventions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,8 @@ export enum InventionID {
ChinCannon = 16,
WispBuster = 17,
DivineHand = 18,
DrygoreAxe = 19
DrygoreAxe = 19,
MoonlightMutator = 20
}

export type Invention = Readonly<{
Expand Down Expand Up @@ -452,6 +453,20 @@ export const Inventions: readonly Invention[] = [
flags: ['equipped'],
inventionLevelNeeded: 100,
usageCostMultiplier: 0.65
},
{
id: InventionID.MoonlightMutator,
name: 'Moonlight mutator',
description: 'Mutates seeds from your bank into zygomite spores.',
item: getOSItem('Moonlight mutator'),
materialTypeBank: new MaterialBank({
organic: 5,
magic: 5
}),
itemCost: new Bank().add('Moonlight essence').add('Lunite', 250),
flags: ['bank'],
inventionLevelNeeded: 100,
usageCostMultiplier: 0.1
}
] as const;

Expand Down
144 changes: 91 additions & 53 deletions src/lib/minions/data/killableMonsters/custom/SunMoon.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { Bank, LootTable, Monsters } from 'oldschooljs';

import { GearStat } from '../../../../gear';
import { addStatsOfItemsTogether, Gear } from '../../../../structures/Gear';
import itemID from '../../../../util/itemID';
import resolveItems from '../../../../util/resolveItems';
import { CustomMonster } from './customMonsters';

Expand All @@ -18,6 +19,17 @@ solisMinGear.equip('Ignis ring(i)');
solisMinGear.equip('Drygore rapier');
solisMinGear.equip('Offhand dragon claw');

const celesMinGear = new Gear();
celesMinGear.equip('Gorajan warrior helmet');
celesMinGear.equip('Gorajan warrior top');
celesMinGear.equip('Gorajan warrior legs');
celesMinGear.equip('Gorajan warrior gloves');
celesMinGear.equip('Gorajan warrior boots');
celesMinGear.equip('TzKal cape');
celesMinGear.equip("Brawler's hook necklace");
celesMinGear.equip('Ignis ring(i)');
celesMinGear.equip('Soulreaper axe');

export const Solis: CustomMonster = {
id: 129_124,
baseMonster: Monsters.AbyssalSire,
Expand Down Expand Up @@ -78,59 +90,85 @@ export const Solis: CustomMonster = {
setupsUsed: ['melee']
};

// export const Celestara: CustomMonster = {
// id: 129_126,
// baseMonster: Monsters.AbyssalSire,
// name: 'Celestara',
// aliases: ['celestara'],
// timeToFinish: Time.Minute * 100,
// hp: 3330,
// table: new LootTable().every('Lunite', [10, 60]).tertiary(300, 'Noom'),
// difficultyRating: 5,
// qpRequired: 260,
// healAmountNeeded: 250 * 200,
// attackStyleToUse: GearStat.AttackStab,
// attackStylesUsed: [GearStat.AttackStab],
// levelRequirements: {
// hitpoints: 110,
// attack: 110,
// strength: 110,
// defence: 110,
// magic: 110,
// ranged: 110,
// slayer: 110
// },
// pohBoosts: {
// pool: {
// 'Ancient rejuvenation pool': 5
// }
// },
// deathProps: {
// hardness: 0.8,
// steepness: 0.999,
// lowestDeathChance: 5,
// highestDeathChance: 70
// },
// minimumFoodHealAmount: 22,
// allItems: resolveItems(['Solite', 'Eagle egg', 'Sun-metal scraps']),
// minimumGearRequirements: {
// melee: {
// ...solisMinGear.stats,
// ranged_strength: 0,
// attack_ranged: 0
// }
// },
// minimumWeaponShieldStats: {
// melee: addStatsOfItemsTogether(resolveItems(['Offhand dragon claw', 'Drygore rapier']), [GearStat.AttackStab])
// },
// itemCost: {
// itemCost: new Bank().add('Super combat potion(4)').add('Heat res. brew', 3).add('Heat res. restore'),
// qtyPerKill: 1
// },
// tameCantKill: true,
// itemsRequired: resolveItems(["Combatant's cape"])
// };
export const Celestara: CustomMonster = {
id: 129_125,
baseMonster: Monsters.AbyssalSire,
name: 'Celestara',
aliases: ['celestara'],
timeToFinish: Time.Minute * 100,
hp: 3330,
table: new LootTable()
.every('Lunite', [10, 60])
.tertiary(300, 'Moonlight essence')
.tertiary(300, 'Moondash charm')
.tertiary(300, 'Noom'),
difficultyRating: 5,
qpRequired: 1500,
healAmountNeeded: 250 * 200,
attackStyleToUse: GearStat.AttackStab,
attackStylesUsed: [GearStat.AttackStab],
levelRequirements: {
hitpoints: 100,
attack: 100,
strength: 100,
defence: 100,
magic: 100,
ranged: 100,
slayer: 100
},
pohBoosts: {
pool: {
'Ancient rejuvenation pool': 5
}
},
deathProps: {
hardness: 0.5,
steepness: 0.999,
lowestDeathChance: 5,
highestDeathChance: 65
},
minimumFoodHealAmount: 22,
allItems: resolveItems(['Lunite', 'Moonlight essence', 'Moondash charm', 'Noom']),
minimumGearRequirements: {
melee: {
...solisMinGear.stats,
ranged_strength: 0,
attack_ranged: 0
}
},
minimumWeaponShieldStats: {
melee: addStatsOfItemsTogether(resolveItems(['Soulreaper axe']), [GearStat.AttackSlash])
},
itemCost: {
itemCost: new Bank()
.add('Super combat potion(4)')
.add('Enhanced saradomin brew', 3)
.add('Enhanced super restore'),
qtyPerKill: 1
},
tameCantKill: true,
itemsRequired: resolveItems(["Combatant's cape"]),
customRequirement: async user => {
const tames = await user.fetchTames();
const hasMaxedIgne = tames.some(tame => tame.isMaxedIgneTame());
if (hasMaxedIgne) return null;
return 'You need to have a maxed Igne Tame (best gear, all fed items) to fight Celestara.';
},
setupsUsed: ['melee'],
equippedItemBoosts: [
{
gearSetup: 'melee',
items: [
{
boostPercent: 25,
itemID: itemID('Axe of the high sungod')
}
]
}
]
};

export const SunMoonMonsters = {
Solis
Solis,
Celestara
};
Loading

0 comments on commit 52cc2cc

Please sign in to comment.