Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions proto/common.proto
Original file line number Diff line number Diff line change
Expand Up @@ -464,6 +464,13 @@ enum ZanzaBuff {
CerebralCortexCompound = 6;
GizzardGum = 7;
LungJuiceCocktail = 8;
DarnassusGiftCollection = 9;
}

enum HitConsumable {
HitConsumableUnknown = 0;
FireToastedBun = 1;
DarkDesire = 2;
}

message MiscConsumes {
Expand Down Expand Up @@ -679,6 +686,7 @@ message Consumes {
int32 pet_attack_power_consumable = 25;
PetMiscConsumes pet_misc_consumes = 27;
SapperExplosive sapper_explosive = 28;
HitConsumable hit_consumable = 29;
}

// NextIndex: 26
Expand Down
26 changes: 26 additions & 0 deletions sim/core/consumes.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ func applyConsumeEffects(agent Agent) {
applyPhysicalBuffConsumes(character, consumes)
applySpellBuffConsumes(character, consumes)
applyZanzaBuffConsumes(character, consumes)
applyHitConsumableConsumes(character, consumes)
applyMiscConsumes(character, consumes.MiscConsumes)

registerPotionCD(agent, consumes)
Expand Down Expand Up @@ -615,6 +616,31 @@ func applyZanzaBuffConsumes(character *Character, consumes *proto.Consumes) {
character.AddStats(stats.Stats{
stats.Stamina: 25,
})
case proto.ZanzaBuff_DarnassusGiftCollection:
character.AddStats(stats.Stats{
stats.Agility: 30,
})
}
}

///////////////////////////////////////////////////////////////////////////
// Hit Consumables
///////////////////////////////////////////////////////////////////////////

func applyHitConsumableConsumes(character *Character, consumes *proto.Consumes) {
if consumes.HitConsumable == proto.HitConsumable_HitConsumableUnknown {
return
}

switch consumes.HitConsumable {
case proto.HitConsumable_FireToastedBun:
character.AddStats(stats.Stats{
stats.MeleeHit: 2 * MeleeHitRatingPerHitChance,
})
case proto.HitConsumable_DarkDesire:
character.AddStats(stats.Stats{
stats.MeleeHit: 2 * MeleeHitRatingPerHitChance,
})
}
}

Expand Down
8 changes: 7 additions & 1 deletion ui/core/components/individual_sim_ui/consumes_picker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -123,8 +123,9 @@ export class ConsumesPicker extends Component {
private buildPhysicalBuffPickers() {
const includeAgi = this.simUI.individualConfig.epStats.includes(Stat.StatAgility);
const includeStr = this.simUI.individualConfig.epStats.includes(Stat.StatStrength);
const includeHit = this.simUI.individualConfig.epStats.includes(Stat.StatMeleeHit);

if (!includeAgi && !includeStr) return;
if (!includeAgi && !includeStr && !includeHit) return;

const fragment = document.createElement('fragment');
fragment.innerHTML = `
Expand All @@ -146,11 +147,16 @@ export class ConsumesPicker extends Component {
relevantStatOptions(ConsumablesInputs.STRENGTH_CONSUMES_CONFIG, this.simUI),
'Strength',
);
const hitConsumableOptions = ConsumablesInputs.makeHitConsumableInput(
relevantStatOptions(ConsumablesInputs.HIT_CONSUMABLE_CONFIG, this.simUI),
'Hit',
);

const pickers = [
buildIconInput(physicalConsumesElem, this.simUI.player, apBuffOptions),
buildIconInput(physicalConsumesElem, this.simUI.player, agiBuffOptions),
buildIconInput(physicalConsumesElem, this.simUI.player, strBuffOptions),
buildIconInput(physicalConsumesElem, this.simUI.player, hitConsumableOptions),
];

this.updateRow(row, pickers);
Expand Down
21 changes: 21 additions & 0 deletions ui/core/components/inputs/consumables.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import {
Food,
FrostPowerBuff,
HealthElixir,
HitConsumable,
ItemSlot,
ManaRegenElixir,
Potions,
Expand Down Expand Up @@ -503,6 +504,10 @@ export const GizzardGum: ConsumableInputConfig<ZanzaBuff> = {
actionId: () => ActionId.fromItemId(8424),
value: ZanzaBuff.GizzardGum,
};
export const DarnassusGiftCollection: ConsumableInputConfig<ZanzaBuff> = {
actionId: () => ActionId.fromItemId(22133),
value: ZanzaBuff.DarnassusGiftCollection,
};

// Zanza Potions
export const SpiritOfZanza: ConsumableInputConfig<ZanzaBuff> = {
Expand All @@ -517,9 +522,25 @@ export const ZANZA_BUFF_CONSUMES_CONFIG: ConsumableStatOption<ZanzaBuff>[] = [
{ config: LungJuiceCocktail, stats: [Stat.StatStamina] },
{ config: CerebralCortexCompound, stats: [Stat.StatIntellect] },
{ config: GizzardGum, stats: [Stat.StatSpirit] },
{ config: DarnassusGiftCollection, stats: [Stat.StatAgility] },
];
export const makeZanzaBuffConsumesInput = makeConsumeInputFactory({ consumesFieldName: 'zanzaBuff' });

// Hit Consumables
export const FireToastedBun: ConsumableInputConfig<HitConsumable> = {
actionId: () => ActionId.fromItemId(23327),
value: HitConsumable.FireToastedBun,
};
export const DarkDesire: ConsumableInputConfig<HitConsumable> = {
actionId: () => ActionId.fromItemId(22237),
value: HitConsumable.DarkDesire,
};
export const HIT_CONSUMABLE_CONFIG: ConsumableStatOption<HitConsumable>[] = [
{ config: FireToastedBun, stats: [Stat.StatMeleeHit] },
{ config: DarkDesire, stats: [Stat.StatMeleeHit] },
];
export const makeHitConsumableInput = makeConsumeInputFactory({ consumesFieldName: 'hitConsumable' });

export const JujuFlurry = makeBooleanMiscConsumeInput({
actionId: () => ActionId.fromItemId(12450),
fieldName: 'jujuFlurry',
Expand Down
Loading