Add daily runs (WiP)
This commit is contained in:
1 parent
81f9e2da36
commit
56f4a71ca6
14 files changed
+332
-139
No files matched your search
+15
-7
@@ -11,12 +11,19 @@ export interface DailyRunConfig {
|
||||
starters: Starter;
|
||||
}
|
||||
|
||||
export function getDailyRunSeed(scene: BattleScene): string {
|
||||
return 'Test';//Utils.randomString(16)
|
||||
export function fetchDailyRunSeed(): Promise<string> {
|
||||
return new Promise<string>(resolve => {
|
||||
Utils.apiFetch('daily/seed').then(response => {
|
||||
if (!response.ok) {
|
||||
resolve(null);
|
||||
return;
|
||||
}
|
||||
return response.text();
|
||||
}).then(seed => resolve(seed));
|
||||
});
|
||||
}
|
||||
|
||||
export function getDailyRunStarters(scene: BattleScene): Starter[] {
|
||||
const seed = getDailyRunSeed(scene);
|
||||
export function getDailyRunStarters(scene: BattleScene, seed: string): Starter[] {
|
||||
const starters: Starter[] = [];
|
||||
|
||||
scene.executeWithSeedOffset(() => {
|
||||
@@ -25,13 +32,15 @@ export function getDailyRunStarters(scene: BattleScene): Starter[] {
|
||||
starterWeights.push(Utils.randSeedInt(9 - starterWeights[0], 1));
|
||||
starterWeights.push(10 - (starterWeights[0] + starterWeights[1]));
|
||||
|
||||
const startingLevel = gameModes[GameModes.DAILY].getStartingLevel();
|
||||
|
||||
for (let s = 0; s < starterWeights.length; s++) {
|
||||
const weight = starterWeights[s];
|
||||
const weightSpecies = Object.keys(speciesStarters)
|
||||
.map(s => parseInt(s) as Species)
|
||||
.filter(s => speciesStarters[s] === weight);
|
||||
const starterSpecies = getPokemonSpecies(Phaser.Math.RND.pick(weightSpecies));
|
||||
const pokemon = new PlayerPokemon(scene, starterSpecies, gameModes[GameModes.DAILY].getStartingLevel(), undefined, undefined, undefined, undefined, undefined, undefined, undefined);
|
||||
const starterSpecies = getPokemonSpecies(getPokemonSpecies(Utils.randSeedItem(weightSpecies)).getSpeciesForLevel(startingLevel, true, true, false, true));
|
||||
const pokemon = new PlayerPokemon(scene, starterSpecies, startingLevel, undefined, undefined, undefined, undefined, undefined, undefined, undefined);
|
||||
const starter: Starter = {
|
||||
species: starterSpecies,
|
||||
dexAttr: pokemon.getDexAttr(),
|
||||
@@ -42,6 +51,5 @@ export function getDailyRunStarters(scene: BattleScene): Starter[] {
|
||||
pokemon.destroy();
|
||||
}
|
||||
}, 0, seed);
|
||||
|
||||
return starters;
|
||||
}
|
||||
@@ -402,7 +402,7 @@ export default class PokemonSpecies extends PokemonSpeciesForm {
|
||||
return this.name;
|
||||
}
|
||||
|
||||
getSpeciesForLevel(level: integer, allowEvolving: boolean = false, forTrainer: boolean = false, isBoss: boolean = false): Species {
|
||||
getSpeciesForLevel(level: integer, allowEvolving: boolean = false, forTrainer: boolean = false, isBoss: boolean = false, player: boolean = false): Species {
|
||||
const prevolutionLevels = this.getPrevolutionLevels();
|
||||
|
||||
if (prevolutionLevels.length) {
|
||||
@@ -437,11 +437,15 @@ export default class PokemonSpecies extends PokemonSpeciesForm {
|
||||
if (!forTrainer && isRegionalEvolution)
|
||||
evolutionChance = 0;
|
||||
else if (ev.wildDelay === SpeciesWildEvolutionDelay.NONE) {
|
||||
const maxLevelDiff = forTrainer || isBoss ? forTrainer && isBoss ? 10 : 20 : 40;
|
||||
const minChance = forTrainer ? 0.5 : 0.75;
|
||||
evolutionChance = Math.min(minChance + easeInFunc(Math.min(level - ev.level, maxLevelDiff) / maxLevelDiff) * (1 - minChance), 1);
|
||||
if (player)
|
||||
evolutionChance = 1;
|
||||
else {
|
||||
const maxLevelDiff = forTrainer || isBoss ? forTrainer && isBoss ? 10 : 20 : 40;
|
||||
const minChance = forTrainer ? 0.5 : 0.75;
|
||||
evolutionChance = Math.min(minChance + easeInFunc(Math.min(level - ev.level, maxLevelDiff) / maxLevelDiff) * (1 - minChance), 1);
|
||||
}
|
||||
} else {
|
||||
let preferredMinLevel = (ev.level - 1) + ev.wildDelay * (forTrainer || isBoss ? forTrainer && isBoss ? 5 : 10 : 20);
|
||||
let preferredMinLevel = (ev.level - 1) + ev.wildDelay * (player ? 0 : forTrainer || isBoss ? forTrainer && isBoss ? 5 : 10 : 20);
|
||||
let evolutionLevel = ev.level > 1 ? ev.level : Math.floor(preferredMinLevel / 2);
|
||||
|
||||
if (ev.level <= 1 && pokemonPrevolutions.hasOwnProperty(this.speciesId)) {
|
||||
|
||||
@@ -455,7 +455,7 @@ interface TrainerConfigs {
|
||||
}
|
||||
|
||||
function getWavePartyTemplate(scene: BattleScene, ...templates: TrainerPartyTemplate[]) {
|
||||
return templates[Math.min(Math.max(Math.ceil(((scene.currentBattle?.waveIndex || startingWave) - 20) / 30), 0), templates.length - 1)];
|
||||
return templates[Math.min(Math.max(Math.ceil((scene.gameMode.getWaveForDifficulty(scene.currentBattle?.waveIndex || startingWave, true) - 20) / 30), 0), templates.length - 1)];
|
||||
}
|
||||
|
||||
function getGymLeaderPartyTemplate(scene: BattleScene) {
|
||||
|
||||
Reference in new issue
Block a user