Skip to content

Commit

Permalink
commit
Browse files Browse the repository at this point in the history
  • Loading branch information
gc committed Mar 2, 2024
1 parent bc844dd commit 1893cf9
Show file tree
Hide file tree
Showing 13 changed files with 290 additions and 32 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
72 changes: 61 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 @@ -11533,3 +11523,63 @@ setCustomItem(
},
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');
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
54 changes: 39 additions & 15 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 @@ -83,22 +95,22 @@ export const Celestara: CustomMonster = {
baseMonster: Monsters.AbyssalSire,
name: 'Celestara',
aliases: ['celestara'],
timeToFinish: Time.Minute * 120,
timeToFinish: Time.Minute * 100,
hp: 3330,
table: new LootTable().every('Lunite', [10, 60]).tertiary(300, 'Noom'),
table: new LootTable().every('Lunite', [10, 60]).tertiary(300, 'Moonlight essence').tertiary(300, 'Noom'),
difficultyRating: 5,
qpRequired: 2500,
healAmountNeeded: 350 * 200,
qpRequired: 1500,
healAmountNeeded: 250 * 200,
attackStyleToUse: GearStat.AttackStab,
attackStylesUsed: [GearStat.AttackStab],
levelRequirements: {
hitpoints: 120,
attack: 110,
strength: 110,
defence: 110,
magic: 110,
ranged: 110,
slayer: 110
hitpoints: 100,
attack: 100,
strength: 100,
defence: 100,
magic: 100,
ranged: 100,
slayer: 100
},
pohBoosts: {
pool: {
Expand All @@ -121,7 +133,7 @@ export const Celestara: CustomMonster = {
}
},
minimumWeaponShieldStats: {
melee: addStatsOfItemsTogether(resolveItems(['Offhand dragon claw', 'Drygore rapier']), [GearStat.AttackStab])
melee: addStatsOfItemsTogether(resolveItems(['Soulreaper axe']), [GearStat.AttackSlash])
},
itemCost: {
itemCost: new Bank().add('Super combat potion(4)').add('Heat res. brew', 3).add('Heat res. restore'),
Expand All @@ -133,11 +145,23 @@ export const Celestara: CustomMonster = {
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 Solis.';
return 'You need to have a maxed Igne Tame (best gear, all fed items) to fight Celestara.';
},
setupsUsed: ['melee']
setupsUsed: ['melee'],
equippedItemBoosts: [
{
gearSetup: 'melee',
items: [
{
boostPercent: 25,
itemID: itemID('Axe of the high sungod')
}
]
}
]
};

export const SunMoonMonsters = {
Solis
Solis,
Celestara
};
14 changes: 13 additions & 1 deletion src/lib/simulation/simulatedKillables.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import { nexUniqueDrops } from '../data/CollectionsExport';
import { chanceOfDOAUnique, pickUniqueToGiveUser } from '../depthsOfAtlantis';
import { MoktangLootTable } from '../minions/data/killableMonsters/custom/bosses/Moktang';
import { NEX_UNIQUE_DROPRATE, nexLootTable } from '../nex';
import { zygomiteFarmingSource } from '../skilling/skills/farming/zygomites';
import { roll } from '../util';
import { WintertodtCrate } from './wintertodt';

Expand Down Expand Up @@ -102,5 +103,16 @@ export const simulatedKillables: SimulatedKillable[] = [
loot: (quantity: number) => {
return MoktangLootTable.roll(quantity);
}
}
},
...zygomiteFarmingSource.map(src => ({
name: src.name,
isCustom: true,
loot: (quantity: number) => {
let loot = new Bank();
for (let i = 0; i < quantity; i++) {
loot.add(src.lootTable.roll());
}
return loot;
}
}))
];
4 changes: 3 additions & 1 deletion src/lib/skilling/skills/farming/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import herbPlants from './herbPlants';
import hopsPlants from './hops';
import specialPlants from './specialPlants';
import trees from './trees';
import { zygomitePlants } from './zygomites';

export const plants: Plant[] = [
...herbPlants,
Expand All @@ -20,7 +21,8 @@ export const plants: Plant[] = [
...fruitTrees,
...hopsPlants,
...specialPlants,
...bushes
...bushes,
...zygomitePlants
];

const maleFarmerItems: { [key: number]: number } = {
Expand Down
84 changes: 84 additions & 0 deletions src/lib/skilling/skills/farming/zygomites.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
import { roll } from 'e';
import { Bank, LootTable } from 'oldschooljs';

import { MysteryBoxes } from '../../../bsoOpenables';
import getOSItem from '../../../util/getOSItem';
import resolveItems from '../../../util/resolveItems';
import { Plant } from '../../types';

export const zygomiteFarmingSource = [
{
name: 'Herbal zygomite',
mutatedFromItems: resolveItems(['Torstol seed', 'Dwarf weed seed', 'Lantadyme seed']),
seedItem: getOSItem('Herbal zygomite spores'),
lootTable: new LootTable()
.every(
new LootTable().add('Mushroom spore').add('Mort myre fungus', [40, 100]).add('Mushroom', [20, 50]),
5
)
.every(new LootTable().add('Torstol').add('Dwarf weed').add('Cadantine').add('Kwuarm'), [40, 100])
.every(MysteryBoxes)
},
{
name: 'Barky zygomite',
mutatedFromItems: resolveItems(['Magic seed', 'Redwood tree seed']),
seedItem: getOSItem('Barky zygomite spores'),
lootTable: new LootTable()
.every(
new LootTable().add('Mushroom spore').add('Mort myre fungus', [40, 100]).add('Mushroom', [20, 50]),
5
)
.every(new LootTable().add('Elder logs').add('Mahogany logs'), [50, 100])
.every(MysteryBoxes)
},
{
name: 'Fruity zygomite',
mutatedFromItems: resolveItems(['Dragonfruit tree seed', 'Palm tree seed', 'Papaya tree seed']),
seedItem: getOSItem('Fruity zygomite spores'),
lootTable: new LootTable()
.every(
new LootTable().add('Mushroom spore').add('Mort myre fungus', [40, 100]).add('Mushroom', [20, 50]),
5
)
.every(new LootTable().add('Avocado').add('Mango').add('Papaya fruit').add('Lychee'), [50, 150])
.every(MysteryBoxes)
}
];

export const zygomitePlants: Plant[] = zygomiteFarmingSource.map(src => ({
id: src.seedItem.id,
level: 105,
plantXp: 181.5,
checkXp: 0,
harvestXp: 927.7,
inputItems: new Bank().add(src.seedItem.id),
name: src.name,
aliases: [src.name.toLowerCase()],
petChance: 7500,
seedType: 'mushroom' as const,
growthTime: 240,
numOfStages: 6,
chance1: 0,
chance99: 0,
chanceOfDeath: 5,
needsChopForHarvest: false,
fixedOutput: true,
fixedOutputAmount: 6,
givesLogs: false,
givesCrops: true,
defaultNumOfPatches: 0,
canPayFarmer: false,
canCompostPatch: true,
canCompostandPay: false,
additionalPatchesByQP: [[1, 1]],
additionalPatchesByFarmLvl: [],
additionalPatchesByFarmGuildAndLvl: [],
timePerPatchTravel: 10,
timePerHarvest: 5,
onHarvest: ({ loot }) => {
loot.add(src.lootTable.roll());
if (roll(1000)) {
loot.add('Fungo');
}
}
}));
1 change: 1 addition & 0 deletions src/lib/skilling/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -277,6 +277,7 @@ export interface Plant {
additionalPatchesByFarmGuildAndLvl: number[][];
timePerPatchTravel: number;
timePerHarvest: number;
onHarvest?: (options: { user: MUser; loot: Bank }) => unknown;
}

export enum HunterTechniqueEnum {
Expand Down
Loading

0 comments on commit 1893cf9

Please sign in to comment.