make sure adventurers for hire don't duplicate on arrival

This commit is contained in:
2025-06-02 20:49:19 +02:00
parent 4de7ac97d1
commit ae65ff9d51
2 changed files with 11 additions and 3 deletions
+5 -1
View File
@@ -77,6 +77,7 @@ import {getNewAdventurerForHire} from "@/classes/Recruitment";
import QuestExpUpgrade from "@/classes/guildUpgrades/QuestExpUpgrade"; import QuestExpUpgrade from "@/classes/guildUpgrades/QuestExpUpgrade";
import QuestGoldUpgrade from "@/classes/guildUpgrades/QuestGoldUpgrade"; import QuestGoldUpgrade from "@/classes/guildUpgrades/QuestGoldUpgrade";
import AutoFinishQuestsUpgrade from "@/classes/guildUpgrades/AutoFinishQuestsUpgrade"; import AutoFinishQuestsUpgrade from "@/classes/guildUpgrades/AutoFinishQuestsUpgrade";
import RecruitmentCapacityUpgrade from "@/classes/guildUpgrades/RecruitmentCapacityUpgrade";
export default defineComponent({ export default defineComponent({
name: "GuildView", name: "GuildView",
@@ -145,7 +146,7 @@ export default defineComponent({
this.adventurersForHire[firstAdventurer.id] = firstAdventurer; this.adventurersForHire[firstAdventurer.id] = firstAdventurer;
} }
const newAdventurerForHire = getNewAdventurerForHire(Object.values(this.adventurersDatabase)); const newAdventurerForHire = getNewAdventurerForHire(Object.values(this.adventurersDatabase), Object.values(this.adventurers));
if (newAdventurerForHire === null) return; if (newAdventurerForHire === null) return;
this.adventurersForHire[newAdventurerForHire.id] = newAdventurerForHire; this.adventurersForHire[newAdventurerForHire.id] = newAdventurerForHire;
@@ -205,6 +206,9 @@ export default defineComponent({
if (saveData.guild.adventurerCapacity) { if (saveData.guild.adventurerCapacity) {
guildUpgrades.adventurerCapacity = new AdventurerCapacityUpgrade(saveData.guild.adventurerCapacity.level); guildUpgrades.adventurerCapacity = new AdventurerCapacityUpgrade(saveData.guild.adventurerCapacity.level);
} }
if (saveData.guild.recruitmentCapacity) {
guildUpgrades.recruitmentCapacity = new RecruitmentCapacityUpgrade(saveData.guild.recruitmentCapacity.level);
}
if (saveData.guild.expModifier) { if (saveData.guild.expModifier) {
guildUpgrades.expModifier = new QuestExpUpgrade(saveData.guild.expModifier.level); guildUpgrades.expModifier = new QuestExpUpgrade(saveData.guild.expModifier.level);
} }
+6 -2
View File
@@ -4,10 +4,14 @@ import type {Adventurer} from "@/classes/Adventurer";
/** /**
* Get a random adventurer from the pool * Get a random adventurer from the pool
* @param adventurerPool * @param adventurerPool
* @param exceptions
* @returns {Adventurer|null} null if the pool is empty * @returns {Adventurer|null} null if the pool is empty
*/ */
export function getNewAdventurerForHire(adventurerPool: Array<Adventurer>): Adventurer|null { export function getNewAdventurerForHire(adventurerPool: Array<Adventurer>, exceptions: Array<Adventurer> = []): Adventurer|null {
if (adventurerPool.length <= 0) return null; if (adventurerPool.length <= 0) return null;
const pool = Array.from(adventurerPool);
const exceptionSet = new Set(exceptions);
pool.filter((adventurer) => !exceptionSet.has(adventurer));
const randomId = adventurerPool.length * Math.random() << 0; const randomId = adventurerPool.length * Math.random() << 0;
return adventurerPool[randomId]; return adventurerPool[randomId];
} }