Skip to content

Commit

Permalink
Add 2% boost for ice spells per virtus piece (oldschoolgg#5808)
Browse files Browse the repository at this point in the history
  • Loading branch information
Felris authored Apr 14, 2024
1 parent f95e217 commit ce20391
Showing 1 changed file with 27 additions and 4 deletions.
31 changes: 27 additions & 4 deletions src/mahoji/lib/abstracted_commands/minionKill.ts
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ import { generateChart } from '../../../lib/util/chart';
import findMonster from '../../../lib/util/findMonster';
import getOSItem from '../../../lib/util/getOSItem';
import { handleMahojiConfirmation } from '../../../lib/util/handleMahojiConfirmation';
import resolveItems from '../../../lib/util/resolveItems';
import { updateBankSetting } from '../../../lib/util/updateBankSetting';
import { hasMonsterRequirements, resolveAvailableItemBoosts } from '../../mahojiSettings';
import { nexCommand } from './nexCommand';
Expand Down Expand Up @@ -247,6 +248,8 @@ export async function minionKillCommand(
let blackMaskBoostMsg = '';
let salveAmuletBoost = 0;
let salveAmuletBoostMsg = '';
let virtusBoost = 0;
let virtusBoostMsg = '';

const dragonBoost = 15; // Common boost percentage for dragon-related gear

Expand Down Expand Up @@ -322,6 +325,24 @@ export async function minionKillCommand(
}
}
}

function calculateVirtusBoost() {
let virtusPiecesEquipped = 0;
for (const item of resolveItems(['Virtus mask', 'Virtus robe top', 'Virtus robe bottom'])) {
if (user.gear.mage.hasEquipped(item)) {
virtusPiecesEquipped += blackMaskBoost !== 0 && itemNameFromID(item) === 'Virtus mask' ? 0 : 1;
}
}

virtusBoost = virtusPiecesEquipped * 2;
virtusBoostMsg =
virtusPiecesEquipped > 1
? ` with ${virtusPiecesEquipped} Virtus pieces`
: virtusPiecesEquipped > 0
? ` with ${virtusPiecesEquipped} Virtus piece`
: '';
}

if (isDragon && monster.name.toLowerCase() !== 'vorkath') {
applyDragonBoost();
}
Expand Down Expand Up @@ -386,13 +407,15 @@ export async function minionKillCommand(

if (boostChoice === 'barrage' && attackStyles.includes(SkillsEnum.Magic) && monster!.canBarrage) {
consumableCosts.push(iceBarrageConsumables);
timeToFinish = reduceNumByPercent(timeToFinish, boostIceBarrage);
boosts.push(`${boostIceBarrage}% for Ice Barrage`);
calculateVirtusBoost();
timeToFinish = reduceNumByPercent(timeToFinish, boostIceBarrage + virtusBoost);
boosts.push(`${boostIceBarrage + virtusBoost}% for Ice Barrage${virtusBoostMsg}`);
burstOrBarrage = SlayerActivityConstants.IceBarrage;
} else if (boostChoice === 'burst' && attackStyles.includes(SkillsEnum.Magic) && monster!.canBarrage) {
consumableCosts.push(iceBurstConsumables);
timeToFinish = reduceNumByPercent(timeToFinish, boostIceBurst);
boosts.push(`${boostIceBurst}% for Ice Burst`);
calculateVirtusBoost();
timeToFinish = reduceNumByPercent(timeToFinish, boostIceBurst + virtusBoost);
boosts.push(`${boostIceBurst + virtusBoost}% for Ice Burst${virtusBoostMsg}`);
burstOrBarrage = SlayerActivityConstants.IceBurst;
} else if (boostChoice === 'cannon' && hasCannon && monster!.cannonMulti) {
usingCannon = true;
Expand Down

0 comments on commit ce20391

Please sign in to comment.