XP system
This commit is contained in:
@ -3,6 +3,7 @@ import {getSkills} from "./skills.ts";
|
||||
|
||||
export class PlayerProgress {
|
||||
#stats: Record<Stat, number>
|
||||
#exp: number;
|
||||
#blood: number
|
||||
#skillsLearned: number[] // use the raw ID representation for indexOf
|
||||
#untrimmedSkillsAvailable: Skill[]
|
||||
@ -14,6 +15,7 @@ export class PlayerProgress {
|
||||
CHA: 10,
|
||||
PSI: 10,
|
||||
};
|
||||
this.#exp = 0;
|
||||
this.#blood = 0;
|
||||
this.#skillsLearned = [];
|
||||
this.#untrimmedSkillsAvailable = []
|
||||
@ -82,6 +84,21 @@ export class PlayerProgress {
|
||||
this.#stats[stat] += amount;
|
||||
}
|
||||
|
||||
addExperience(amt: number) {
|
||||
this.#exp += amt;
|
||||
}
|
||||
|
||||
getExperience(): number {
|
||||
return this.#exp
|
||||
}
|
||||
|
||||
spendExperience(cost: number) {
|
||||
if (this.#exp < cost) {
|
||||
throw `can't spend ${cost}`
|
||||
}
|
||||
this.#exp -= cost;
|
||||
}
|
||||
|
||||
getStat(stat: Stat): number {
|
||||
return this.#stats[stat]
|
||||
}
|
||||
@ -97,9 +114,6 @@ export class PlayerProgress {
|
||||
getAvailableSkills(): Skill[] {
|
||||
// Sort by cost, then by name, then trim down to first 6
|
||||
let skillsAvailable = [...this.#untrimmedSkillsAvailable];
|
||||
skillsAvailable.sort((a, b) => {
|
||||
return getSkills().computeCost(a) - getSkills().computeCost(b)
|
||||
});
|
||||
skillsAvailable.sort((a, b) => {
|
||||
let name1 = getSkills().get(a).profile.name;
|
||||
let name2 = getSkills().get(b).profile.name;
|
||||
@ -108,8 +122,12 @@ export class PlayerProgress {
|
||||
if (name1 > name2) { return 1; }
|
||||
return 0;
|
||||
});
|
||||
skillsAvailable.sort((a, b) => {
|
||||
return getSkills().computeCost(a) - getSkills().computeCost(b)
|
||||
});
|
||||
return skillsAvailable.slice(0, 6)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
let active: PlayerProgress = new PlayerProgress();
|
||||
|
Reference in New Issue
Block a user