add quest exp modifier upgrade

This commit is contained in:
2023-04-23 15:22:40 +02:00
parent 3b47ed1bed
commit 40d5a876b8
6 changed files with 67 additions and 11 deletions
+7 -3
View File
@@ -1,6 +1,7 @@
import type {GuildUpgrade} from "@/classes/GuildUpgrade";
import {AdventurerCapacityUpgrade} from "@/classes/guildUpgrades/AdventurerCapacityUpgrade";
import AdventurerCapacityUpgrade from "@/classes/guildUpgrades/AdventurerCapacityUpgrade";
import {formatGold} from "@/classes/NumberMagic";
import QuestExpUpgrade from "@/classes/guildUpgrades/QuestExpUpgrade";
export class Guild {
@@ -9,6 +10,7 @@ export class Guild {
displayUpgradeCost: number|string;
upgradeCost: number|null = null;
adventurerCapacity: AdventurerCapacityUpgrade;
expModifier: QuestExpUpgrade;
constructor(level: number, gold: number, upgrades: {[index:string]: GuildUpgrade} = {}) {
this.gold = gold;
@@ -18,6 +20,7 @@ export class Guild {
this.upgradeCost = this.getUpgradeCost();
this.adventurerCapacity = upgrades.adventurerCapacity as AdventurerCapacityUpgrade ?? new AdventurerCapacityUpgrade();
this.expModifier = upgrades.expModifier as QuestExpUpgrade ?? new QuestExpUpgrade();
}
@@ -43,7 +46,7 @@ export class Guild {
}
isMaxLevel(): boolean {
return this.level >= 7;
return this.level >= 8;
}
}
@@ -53,5 +56,6 @@ const upgradeCosts = {
"3": 5000,
"4": 10000,
"5": 25000,
"6": 50000,
"6": 100000,
"7": 750000,
} as {[index:string]: number}
+3 -2
View File
@@ -33,8 +33,9 @@ export class Quest {
/**
* Generate rewards for a quest and return it
* @param quest
* @param expModifier - multiplification modifier for the exp reward
*/
export function getQuestWithRewards(quest: Quest) {
export function getQuestWithRewards(quest: Quest, expModifier: number = 1) {
let maxProgress = 1;
@@ -70,7 +71,7 @@ export function getQuestWithRewards(quest: Quest) {
}
let goldReward = Math.floor(maxProgress/6);
let expReward = Math.floor(Math.floor(maxProgress/120) - maxProgress/1000);
let expReward = Math.floor((Math.floor(maxProgress/120) - maxProgress/1000) * expModifier);
// add some randomness to the rewards
goldReward = Math.floor(randomNumberBetween(goldReward * 0.95, goldReward * 1.1));
@@ -1,6 +1,6 @@
import {GuildUpgrade} from "@/classes/GuildUpgrade";
export class AdventurerCapacityUpgrade extends GuildUpgrade {
export default class AdventurerCapacityUpgrade extends GuildUpgrade {
constructor(level: number = 1) {
super();
this.level = level;
@@ -0,0 +1,24 @@
import {GuildUpgrade} from "@/classes/GuildUpgrade";
export default class QuestExpUpgrade extends GuildUpgrade {
constructor(level: number = 1) {
super();
this.level = level;
this.nextLevelCost = this.getCostForLevel(this.level);
this.guildLevelRequirement = 8;
}
upgrade(): void {
this.level += 1;
this.nextLevelCost = this.getCostForLevel(this.level);
}
getCostForLevel(level: number): number {
const scalingFactor = Math.pow(1.15, level - 1);
return Math.floor(4000000 * scalingFactor * Math.pow(level, 1.1));
}
getModifier(): number {
return 1 + (this.level * 0.1);
}
}