mirror of
https://github.com/thepaperpilot/Planar-Pioneers.git
synced 2024-11-24 09:21:45 +00:00
Change upgrade names
This commit is contained in:
parent
204b6788b0
commit
de1f37d732
3 changed files with 120 additions and 17 deletions
|
@ -48,7 +48,6 @@
|
||||||
"jsdom": "^20.0.0",
|
"jsdom": "^20.0.0",
|
||||||
"prettier": "^2.5.1",
|
"prettier": "^2.5.1",
|
||||||
"typescript": "^5.0.2",
|
"typescript": "^5.0.2",
|
||||||
"unique-names-generator": "^4.7.1",
|
|
||||||
"vitest": "^0.29.3",
|
"vitest": "^0.29.3",
|
||||||
"vue-tsc": "^0.38.1"
|
"vue-tsc": "^0.38.1"
|
||||||
},
|
},
|
||||||
|
|
|
@ -28,7 +28,6 @@ import {
|
||||||
} from "game/modifiers";
|
} from "game/modifiers";
|
||||||
import { State, noPersist, persistent } from "game/persistence";
|
import { State, noPersist, persistent } from "game/persistence";
|
||||||
import { createCostRequirement } from "game/requirements";
|
import { createCostRequirement } from "game/requirements";
|
||||||
import { adjectives, colors, uniqueNamesGenerator } from "unique-names-generator";
|
|
||||||
import Decimal, { DecimalSource } from "util/bignum";
|
import Decimal, { DecimalSource } from "util/bignum";
|
||||||
import { format, formatWhole } from "util/break_eternity";
|
import { format, formatWhole } from "util/break_eternity";
|
||||||
import { Direction, WithRequired, camelToTitle } from "util/common";
|
import { Direction, WithRequired, camelToTitle } from "util/common";
|
||||||
|
@ -37,7 +36,7 @@ import { VueFeature, render, renderRow, trackHover } from "util/vue";
|
||||||
import { ComputedRef, Ref, computed, ref, unref } from "vue";
|
import { ComputedRef, Ref, computed, ref, unref } from "vue";
|
||||||
import { useToast } from "vue-toastification";
|
import { useToast } from "vue-toastification";
|
||||||
import { createCollapsibleModifierSections, createFormulaPreview, estimateTime } from "./common";
|
import { createCollapsibleModifierSections, createFormulaPreview, estimateTime } from "./common";
|
||||||
import { getColor, getName, sfc32 } from "./utils";
|
import { getColor, getName, getPowerName, sfc32 } from "./utils";
|
||||||
import {
|
import {
|
||||||
Resources,
|
Resources,
|
||||||
InfluenceState,
|
InfluenceState,
|
||||||
|
@ -218,7 +217,7 @@ export function createPlane(
|
||||||
};
|
};
|
||||||
const upgradeType = pickRandom(upgradeTypeWeights, random);
|
const upgradeType = pickRandom(upgradeTypeWeights, random);
|
||||||
const cost = nextCost.value;
|
const cost = nextCost.value;
|
||||||
const title = getRandomUpgrade(random);
|
const title = getPowerName(random);
|
||||||
let description = "";
|
let description = "";
|
||||||
let modifier: WithRequired<Modifier, "description" | "invert">;
|
let modifier: WithRequired<Modifier, "description" | "invert">;
|
||||||
let previewModifier: WithRequired<Modifier, "invert">;
|
let previewModifier: WithRequired<Modifier, "invert">;
|
||||||
|
@ -309,7 +308,7 @@ export function createPlane(
|
||||||
// This will become less accurate the further n gets from when the repeatable showed up, but at that time it should be having an increasingly smaller effect on the overall gain
|
// This will become less accurate the further n gets from when the repeatable showed up, but at that time it should be having an increasingly smaller effect on the overall gain
|
||||||
const currentN = n.value;
|
const currentN = n.value;
|
||||||
const initialCost = nextCost.value;
|
const initialCost = nextCost.value;
|
||||||
const title = getRandomUpgrade(random);
|
const title = getPowerName(random);
|
||||||
let description = "";
|
let description = "";
|
||||||
let effect: ComputedRef<string>;
|
let effect: ComputedRef<string>;
|
||||||
let modifier: WithRequired<Modifier, "description" | "invert">;
|
let modifier: WithRequired<Modifier, "description" | "invert">;
|
||||||
|
@ -431,7 +430,7 @@ export function createPlane(
|
||||||
cachedGain[n.value] = costFormula.evaluate();
|
cachedGain[n.value] = costFormula.evaluate();
|
||||||
n.value += 2;
|
n.value += 2;
|
||||||
const clickableVisibility = visibility;
|
const clickableVisibility = visibility;
|
||||||
const title = getRandomUpgrade(random);
|
const title = getPowerName(random);
|
||||||
const formula = Formula.variable(prestigeResource).pow(effectExponent).add(1);
|
const formula = Formula.variable(prestigeResource).pow(effectExponent).add(1);
|
||||||
const modifier = createMultiplicativeModifier(() => ({
|
const modifier = createMultiplicativeModifier(() => ({
|
||||||
multiplier: () => formula.evaluate(),
|
multiplier: () => formula.evaluate(),
|
||||||
|
@ -527,7 +526,7 @@ export function createPlane(
|
||||||
const xp = createResource<DecimalSource>(0);
|
const xp = createResource<DecimalSource>(0);
|
||||||
const barVisibility = visibility;
|
const barVisibility = visibility;
|
||||||
const currentN = n.value;
|
const currentN = n.value;
|
||||||
const title = getRandomUpgrade(random);
|
const title = getPowerName(random);
|
||||||
const cost = Decimal.add(difficulty, random() - 0.5)
|
const cost = Decimal.add(difficulty, random() - 0.5)
|
||||||
.pow_base(2)
|
.pow_base(2)
|
||||||
.times(10);
|
.times(10);
|
||||||
|
@ -1080,14 +1079,4 @@ function pickRandom<T extends string>(items: Record<T, number>, random: () => nu
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getRandomUpgrade(random: () => number) {
|
|
||||||
return camelToTitle(
|
|
||||||
uniqueNamesGenerator({
|
|
||||||
dictionaries: [colors, adjectives],
|
|
||||||
seed: random() * 4294967296,
|
|
||||||
separator: " "
|
|
||||||
}) + "ity"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
export type GenericPlane = ReturnType<typeof createPlane>;
|
export type GenericPlane = ReturnType<typeof createPlane>;
|
||||||
|
|
|
@ -212,6 +212,121 @@ export function getName(random: () => number) {
|
||||||
return camelToTitle(name);
|
return camelToTitle(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const powerMorphemes = {
|
||||||
|
1: ["a", "e", "i", "o", "u"],
|
||||||
|
2: [
|
||||||
|
"ph",
|
||||||
|
"th",
|
||||||
|
"ch",
|
||||||
|
"sh",
|
||||||
|
"br",
|
||||||
|
"cr",
|
||||||
|
"dr",
|
||||||
|
"fr",
|
||||||
|
"gr",
|
||||||
|
"pr",
|
||||||
|
"tr",
|
||||||
|
"str",
|
||||||
|
"sc",
|
||||||
|
"sk",
|
||||||
|
"sm",
|
||||||
|
"sn",
|
||||||
|
"sp",
|
||||||
|
"st",
|
||||||
|
"sw"
|
||||||
|
],
|
||||||
|
3: [
|
||||||
|
"ae",
|
||||||
|
"ai",
|
||||||
|
"ao",
|
||||||
|
"au",
|
||||||
|
"ay",
|
||||||
|
"ea",
|
||||||
|
"ei",
|
||||||
|
"eo",
|
||||||
|
"eu",
|
||||||
|
"ey",
|
||||||
|
"ua",
|
||||||
|
"ue",
|
||||||
|
"ui",
|
||||||
|
"uo",
|
||||||
|
"uy",
|
||||||
|
"ia",
|
||||||
|
"ie",
|
||||||
|
"iu",
|
||||||
|
"io",
|
||||||
|
"iy",
|
||||||
|
"oa",
|
||||||
|
"oe",
|
||||||
|
"ou",
|
||||||
|
"oi",
|
||||||
|
"oy"
|
||||||
|
],
|
||||||
|
4: [
|
||||||
|
"morp",
|
||||||
|
"flux",
|
||||||
|
"syn",
|
||||||
|
"void",
|
||||||
|
"rift",
|
||||||
|
"dyn",
|
||||||
|
"nov",
|
||||||
|
"chron",
|
||||||
|
"lum",
|
||||||
|
"par",
|
||||||
|
"ter",
|
||||||
|
"psy",
|
||||||
|
"phan",
|
||||||
|
"man",
|
||||||
|
"grav",
|
||||||
|
"pyr",
|
||||||
|
"cry",
|
||||||
|
"hydr",
|
||||||
|
"elec",
|
||||||
|
"kin",
|
||||||
|
"nan",
|
||||||
|
"omni"
|
||||||
|
],
|
||||||
|
5: [
|
||||||
|
"ance",
|
||||||
|
"ation",
|
||||||
|
"esis",
|
||||||
|
"ergy",
|
||||||
|
"tide",
|
||||||
|
"al",
|
||||||
|
"ism",
|
||||||
|
"ity",
|
||||||
|
"mancy",
|
||||||
|
"urgy",
|
||||||
|
"pathy",
|
||||||
|
"port",
|
||||||
|
"shift",
|
||||||
|
"burst",
|
||||||
|
"pulse",
|
||||||
|
"wave",
|
||||||
|
"field",
|
||||||
|
"storm",
|
||||||
|
"force",
|
||||||
|
"blade"
|
||||||
|
]
|
||||||
|
};
|
||||||
|
const powerTemplates = [
|
||||||
|
[1, 2, 1, 4, 5],
|
||||||
|
[1, 4, 5],
|
||||||
|
[2, 1, 4, 5],
|
||||||
|
[1, 2, 3, 4, 5],
|
||||||
|
[3, 4, 5]
|
||||||
|
] as const;
|
||||||
|
|
||||||
|
export function getPowerName(random: () => number) {
|
||||||
|
const template = powerTemplates[Math.floor(random() * powerTemplates.length)];
|
||||||
|
let name = "";
|
||||||
|
for (let i = 0; i < template.length; i++) {
|
||||||
|
const morphemeSet = powerMorphemes[template[i]];
|
||||||
|
name += morphemeSet[Math.floor(random() * morphemeSet.length)];
|
||||||
|
}
|
||||||
|
return camelToTitle(name);
|
||||||
|
}
|
||||||
|
|
||||||
export function getColor(base: [number, number, number], random: () => number) {
|
export function getColor(base: [number, number, number], random: () => number) {
|
||||||
const [h, s, v] = rgb2hsv(...base);
|
const [h, s, v] = rgb2hsv(...base);
|
||||||
const [r, g, b] = hsv2rgb(Math.floor(random() * 360), s, v);
|
const [r, g, b] = hsv2rgb(Math.floor(random() * 360), s, v);
|
||||||
|
|
Loading…
Reference in a new issue