Add Soul Dew item and make various minor changes

pull/14/head
Flashfyre 2024-01-09 00:06:11 -05:00
parent 63834858cd
commit 7f1add83c4
11 changed files with 315 additions and 213 deletions

BIN
public/audio/cry/866.ogg Normal file

Binary file not shown.

View File

@ -4924,7 +4924,7 @@
}
},
{
"filename": "steelixite",
"filename": "soul_dew",
"rotated": false,
"trimmed": true,
"sourceSize": {
@ -4945,7 +4945,7 @@
}
},
{
"filename": "swampertite",
"filename": "steelixite",
"rotated": false,
"trimmed": true,
"sourceSize": {
@ -4966,7 +4966,7 @@
}
},
{
"filename": "tyranitarite",
"filename": "swampertite",
"rotated": false,
"trimmed": true,
"sourceSize": {
@ -4987,7 +4987,7 @@
}
},
{
"filename": "venusaurite",
"filename": "tyranitarite",
"rotated": false,
"trimmed": true,
"sourceSize": {
@ -5006,6 +5006,27 @@
"w": 16,
"h": 16
}
},
{
"filename": "venusaurite",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 32,
"h": 32
},
"spriteSourceSize": {
"x": 8,
"y": 8,
"w": 16,
"h": 16
},
"frame": {
"x": 297,
"y": 289,
"w": 16,
"h": 16
}
}
]
}
@ -5013,6 +5034,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
"smartupdate": "$TexturePacker:SmartUpdate:3d96f166cb04b00665907a39d006b2ef:f182d2a1b46296a49dfc48249c1682fb:110e074689c9edd2c54833ce2e4d9270$"
"smartupdate": "$TexturePacker:SmartUpdate:add9eb8b8733956530a2c48ab73c92b3:e3840500ae12890f9d66a76a719ccd1d:110e074689c9edd2c54833ce2e4d9270$"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 241 B

View File

@ -4,13 +4,13 @@
"image": "pokemon_icons_9.png",
"format": "RGBA8888",
"size": {
"w": 118,
"h": 171
"w": 113,
"h": 227
},
"scale": 1,
"frames": [
{
"filename": "985",
"filename": "985.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
@ -31,7 +31,49 @@
}
},
{
"filename": "986",
"filename": "1011.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 30
},
"spriteSourceSize": {
"x": 10,
"y": 4,
"w": 21,
"h": 24
},
"frame": {
"x": 29,
"y": 0,
"w": 21,
"h": 24
}
},
{
"filename": "1011s.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 30
},
"spriteSourceSize": {
"x": 10,
"y": 4,
"w": 21,
"h": 24
},
"frame": {
"x": 50,
"y": 0,
"w": 21,
"h": 24
}
},
{
"filename": "986.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
@ -45,14 +87,14 @@
"h": 25
},
"frame": {
"x": 29,
"x": 71,
"y": 0,
"w": 25,
"h": 25
}
},
{
"filename": "990",
"filename": "990.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
@ -66,14 +108,35 @@
"h": 25
},
"frame": {
"x": 54,
"y": 0,
"x": 0,
"y": 25,
"w": 30,
"h": 25
}
},
{
"filename": "987",
"filename": "1022.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 30
},
"spriteSourceSize": {
"x": 6,
"y": 4,
"w": 28,
"h": 25
},
"frame": {
"x": 30,
"y": 25,
"w": 28,
"h": 25
}
},
{
"filename": "987.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
@ -87,14 +150,14 @@
"h": 26
},
"frame": {
"x": 84,
"y": 0,
"x": 58,
"y": 25,
"w": 26,
"h": 26
}
},
{
"filename": "991",
"filename": "991.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
@ -108,14 +171,14 @@
"h": 26
},
"frame": {
"x": 0,
"y": 23,
"x": 84,
"y": 25,
"w": 22,
"h": 26
}
},
{
"filename": "984",
"filename": "984.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
@ -129,35 +192,14 @@
"h": 27
},
"frame": {
"x": 22,
"y": 25,
"x": 0,
"y": 51,
"w": 34,
"h": 27
}
},
{
"filename": "982",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 30
},
"spriteSourceSize": {
"x": 9,
"y": 1,
"w": 24,
"h": 28
},
"frame": {
"x": 56,
"y": 25,
"w": 24,
"h": 28
}
},
{
"filename": "993",
"filename": "993.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
@ -171,14 +213,14 @@
"h": 27
},
"frame": {
"x": 80,
"y": 26,
"x": 34,
"y": 51,
"w": 32,
"h": 27
}
},
{
"filename": "979",
"filename": "979.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
@ -192,14 +234,14 @@
"h": 28
},
"frame": {
"x": 0,
"y": 52,
"x": 66,
"y": 51,
"w": 29,
"h": 28
}
},
{
"filename": "1010",
"filename": "982.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
@ -207,20 +249,20 @@
"h": 30
},
"spriteSourceSize": {
"x": 8,
"x": 9,
"y": 1,
"w": 23,
"w": 24,
"h": 28
},
"frame": {
"x": 29,
"y": 52,
"w": 23,
"x": 0,
"y": 79,
"w": 24,
"h": 28
}
},
{
"filename": "992",
"filename": "992.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
@ -234,14 +276,14 @@
"h": 28
},
"frame": {
"x": 52,
"y": 53,
"x": 24,
"y": 79,
"w": 32,
"h": 28
}
},
{
"filename": "1009",
"filename": "1009.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
@ -255,14 +297,35 @@
"h": 28
},
"frame": {
"x": 84,
"y": 53,
"x": 56,
"y": 79,
"w": 34,
"h": 28
}
},
{
"filename": "989",
"filename": "1010.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 30
},
"spriteSourceSize": {
"x": 8,
"y": 1,
"w": 23,
"h": 28
},
"frame": {
"x": 90,
"y": 79,
"w": 23,
"h": 28
}
},
{
"filename": "989.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
@ -277,34 +340,13 @@
},
"frame": {
"x": 0,
"y": 80,
"y": 107,
"w": 27,
"h": 29
}
},
{
"filename": "1006",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 30
},
"spriteSourceSize": {
"x": 9,
"y": 0,
"w": 24,
"h": 29
},
"frame": {
"x": 27,
"y": 80,
"w": 24,
"h": 29
}
},
{
"filename": "1005",
"filename": "1005.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
@ -318,14 +360,35 @@
"h": 29
},
"frame": {
"x": 51,
"y": 81,
"x": 27,
"y": 107,
"w": 34,
"h": 29
}
},
{
"filename": "981",
"filename": "1006.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 30
},
"spriteSourceSize": {
"x": 9,
"y": 0,
"w": 24,
"h": 29
},
"frame": {
"x": 61,
"y": 107,
"w": 24,
"h": 29
}
},
{
"filename": "981.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
@ -340,13 +403,13 @@
},
"frame": {
"x": 85,
"y": 81,
"y": 107,
"w": 25,
"h": 30
}
},
{
"filename": "983",
"filename": "983.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
@ -361,13 +424,13 @@
},
"frame": {
"x": 0,
"y": 109,
"y": 137,
"w": 27,
"h": 30
}
},
{
"filename": "988",
"filename": "988.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
@ -382,13 +445,13 @@
},
"frame": {
"x": 27,
"y": 110,
"y": 137,
"w": 28,
"h": 30
}
},
{
"filename": "994",
"filename": "994.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
@ -403,13 +466,13 @@
},
"frame": {
"x": 55,
"y": 110,
"y": 137,
"w": 29,
"h": 30
}
},
{
"filename": "995",
"filename": "995.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
@ -424,13 +487,76 @@
},
"frame": {
"x": 84,
"y": 111,
"y": 137,
"w": 29,
"h": 30
}
},
{
"filename": "1019",
"filename": "1018.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 30
},
"spriteSourceSize": {
"x": 4,
"y": 0,
"w": 33,
"h": 30
},
"frame": {
"x": 0,
"y": 167,
"w": 33,
"h": 30
}
},
{
"filename": "1018s.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 30
},
"spriteSourceSize": {
"x": 4,
"y": 0,
"w": 33,
"h": 30
},
"frame": {
"x": 33,
"y": 167,
"w": 33,
"h": 30
}
},
{
"filename": "1019.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 30
},
"spriteSourceSize": {
"x": 7,
"y": 0,
"w": 26,
"h": 30
},
"frame": {
"x": 66,
"y": 167,
"w": 26,
"h": 30
}
},
{
"filename": "1019s.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
@ -445,97 +571,13 @@
},
"frame": {
"x": 0,
"y": 139,
"y": 197,
"w": 26,
"h": 30
}
},
{
"filename": "1018",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 30
},
"spriteSourceSize": {
"x": 4,
"y": 0,
"w": 33,
"h": 30
},
"frame": {
"x": 26,
"y": 140,
"w": 33,
"h": 30
}
},
{
"filename": "1018s",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 30
},
"spriteSourceSize": {
"x": 4,
"y": 0,
"w": 33,
"h": 30
},
"frame": {
"x": 59,
"y": 141,
"w": 33,
"h": 30
}
},
{
"filename": "1019s",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 30
},
"spriteSourceSize": {
"x": 7,
"y": 0,
"w": 26,
"h": 30
},
"frame": {
"x": 92,
"y": 141,
"w": 26,
"h": 30
}
},
{
"filename": "1020",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 30
},
"spriteSourceSize": {
"x": 6,
"y": 0,
"w": 29,
"h": 29
},
"frame": {
"x": 0,
"y": 170,
"w": 29,
"h": 29
}
},
{
"filename": "1021",
"filename": "1020.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
@ -545,18 +587,18 @@
"spriteSourceSize": {
"x": 5,
"y": 0,
"w": 30,
"w": 31,
"h": 30
},
"frame": {
"x": 30,
"y": 171,
"w": 30,
"x": 26,
"y": 197,
"w": 31,
"h": 30
}
},
{
"filename": "1022",
"filename": "1021.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
@ -564,20 +606,20 @@
"h": 30
},
"spriteSourceSize": {
"x": 7,
"y": 5,
"w": 26,
"h": 23
"x": 4,
"y": 0,
"w": 32,
"h": 30
},
"frame": {
"x": 61,
"y": 172,
"w": 26,
"h": 23
"x": 57,
"y": 197,
"w": 32,
"h": 30
}
},
{
"filename": "1023",
"filename": "1023.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
@ -585,16 +627,16 @@
"h": 30
},
"spriteSourceSize": {
"x": 10,
"y": 1,
"w": 20,
"h": 28
"x": 9,
"y": 0,
"w": 22,
"h": 30
},
"frame": {
"x": 88,
"y": 172,
"w": 20,
"h": 28
"x": 89,
"y": 197,
"w": 22,
"h": 30
}
}
]
@ -603,6 +645,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
"smartupdate": "$TexturePacker:SmartUpdate:0d2b456ad5900444d0fb42f803d9b732:eb5f601e7f2aba8618c415451de6f38b:6fb417eff82c0971c86b4818772ba292$"
"smartupdate": "$TexturePacker:SmartUpdate:f011c531de0311eb45a48367c0a8f4e6:bd0f13886ac7d25514ed3c9125a8e8d4:6fb417eff82c0971c86b4818772ba292$"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

@ -204,6 +204,7 @@ export interface TrainerTierPools {
}
export enum TrainerPartyMemberStrength {
WEAKEST,
WEAKER,
WEAK,
AVERAGE,
@ -305,17 +306,20 @@ export const trainerPartyTemplates = {
THREE_AVG: new TrainerPartyTemplate(3, TrainerPartyMemberStrength.AVERAGE),
THREE_AVG_SAME: new TrainerPartyTemplate(3, TrainerPartyMemberStrength.AVERAGE, true),
THREE_WEAK_BALANCED: new TrainerPartyTemplate(3, TrainerPartyMemberStrength.WEAK, false, true),
FOUR_WEAKEST: new TrainerPartyTemplate(4, TrainerPartyMemberStrength.WEAKEST),
FOUR_WEAKER: new TrainerPartyTemplate(4, TrainerPartyMemberStrength.WEAKER),
FOUR_WEAKER_SAME: new TrainerPartyTemplate(4, TrainerPartyMemberStrength.WEAKER, true),
FOUR_WEAK: new TrainerPartyTemplate(4, TrainerPartyMemberStrength.WEAK),
FOUR_WEAK_SAME: new TrainerPartyTemplate(4, TrainerPartyMemberStrength.WEAK, true),
FOUR_WEAK_BALANCED: new TrainerPartyTemplate(4, TrainerPartyMemberStrength.WEAK, false, true),
FIVE_WEAKEST: new TrainerPartyTemplate(5, TrainerPartyMemberStrength.WEAKEST),
FIVE_WEAKER: new TrainerPartyTemplate(5, TrainerPartyMemberStrength.WEAKER),
FIVE_WEAK: new TrainerPartyTemplate(5, TrainerPartyMemberStrength.WEAK),
FIVE_WEAK_BALANCED: new TrainerPartyTemplate(5, TrainerPartyMemberStrength.WEAK, false, true),
SIX_WEAK_SAME: new TrainerPartyTemplate(6, TrainerPartyMemberStrength.WEAKER, true),
SIX_WEAKEST: new TrainerPartyTemplate(6, TrainerPartyMemberStrength.WEAKEST),
SIX_WEAKER: new TrainerPartyTemplate(6, TrainerPartyMemberStrength.WEAKER),
SIX_WEAKER_SAME: new TrainerPartyTemplate(6, TrainerPartyMemberStrength.WEAKER, true),
SIX_WEAK_SAME: new TrainerPartyTemplate(6, TrainerPartyMemberStrength.WEAKER, true),
SIX_WEAK_BALANCED: new TrainerPartyTemplate(6, TrainerPartyMemberStrength.WEAK, false, true),
GYM_LEADER_1: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(1, TrainerPartyMemberStrength.STRONG), new TrainerPartyTemplate(1, TrainerPartyMemberStrength.STRONGER)),
@ -673,7 +677,7 @@ export const trainerConfigs: TrainerConfigs = {
[TrainerPoolTier.ULTRA_RARE]: [ Species.KUBFU ]
}),
[TrainerType.BREEDER]: new TrainerConfig(++t).setMoneyMultiplier(1.325).setEncounterBgm(TrainerType.POKEFAN).setHasGenders().setDouble()
.setPartyTemplateFunc(scene => getWavePartyTemplate(scene, trainerPartyTemplates.FOUR_WEAKER, trainerPartyTemplates.FIVE_WEAKER, trainerPartyTemplates.SIX_WEAKER)),
.setPartyTemplateFunc(scene => getWavePartyTemplate(scene, trainerPartyTemplates.FOUR_WEAKEST, trainerPartyTemplates.FIVE_WEAKEST, trainerPartyTemplates.SIX_WEAKEST)),
[TrainerType.CLERK]: new TrainerConfig(++t).setHasGenders().setEncounterBgm(TrainerType.CLERK)
.setPartyTemplates(trainerPartyTemplates.TWO_WEAK, trainerPartyTemplates.THREE_WEAK, trainerPartyTemplates.ONE_AVG, trainerPartyTemplates.TWO_AVG, trainerPartyTemplates.TWO_WEAK_ONE_AVG)
.setSpeciesPools({

View File

@ -681,6 +681,8 @@ export const modifierTypes = {
SOOTHE_BELL: () => new PokemonFriendshipBoosterModifierType('Soothe Bell'),
SOUL_DEW: () => new PokemonHeldItemModifierType('Soul Dew', 'Increases the influence of a Pokémon\'s nature on its stats by 5% (additive)', (type, args) => new Modifiers.PokemonNatureWeightModifier(type, (args[0] as Pokemon).id)),
AMULET_COIN: () => new ModifierType('Amulet Coin', 'Increases money rewards by 20%', (type, _args) => new Modifiers.MoneyMultiplierModifier(type)),
GOLDEN_PUNCH: () => new PokemonHeldItemModifierType('Golden Punch', 'Grants 20% of damage inflicted as money', (type, args) => new Modifiers.DamageMoneyRewardModifier(type, (args[0] as Pokemon).id)),
COIN_CASE: () => new ModifierType('Coin Case', 'After every 10th battle, receive 10% of your money in interest', (type, _args) => new Modifiers.MoneyInterestModifier(type)),
@ -821,6 +823,7 @@ const modifierPool = {
const friendshipBenefitPartyMemberCount = Math.min(party.filter(p => (pokemonEvolutions.hasOwnProperty(p.species.speciesId) && pokemonEvolutions[p.species.speciesId].find(e => e.condition && e.condition instanceof SpeciesFriendshipEvolutionCondition)) || p.moveset.find(m => m.moveId === Moves.RETURN)).length, 3);
return friendshipBenefitPartyMemberCount * 3;
}),
new WeightedModifierType(modifierTypes.SOUL_DEW, 3),
new WeightedModifierType(modifierTypes.GOLDEN_PUNCH, 2),
new WeightedModifierType(modifierTypes.GRIP_CLAW, 2),
new WeightedModifierType(modifierTypes.HEALING_CHARM, 1),

View File

@ -1232,6 +1232,34 @@ export class PokemonFriendshipBoosterModifier extends PokemonHeldItemModifier {
}
}
export class PokemonNatureWeightModifier extends PokemonHeldItemModifier {
constructor(type: ModifierTypes.ModifierType, pokemonId: integer, stackCount?: integer) {
super(type, pokemonId, stackCount);
}
matchType(modifier: Modifier): boolean {
return modifier instanceof PokemonNatureWeightModifier;
}
clone(): PersistentModifier {
return new PokemonNatureWeightModifier(this.type, this.pokemonId, this.stackCount);
}
apply(args: any[]): boolean {
const multiplier = args[1] as Utils.IntegerHolder;
if (multiplier.value !== 1) {
multiplier.value += 0.05 * this.getStackCount() * (multiplier.value > 1 ? 1 : -1);
return true;
}
return false;
}
getMaxHeldItemCount(pokemon: Pokemon): integer {
return 5;
}
}
export class MoneyMultiplierModifier extends PersistentModifier {
constructor(type: ModifierType, stackCount?: integer) {
super(type, stackCount);

View File

@ -7,7 +7,7 @@ import * as Utils from './utils';
import { Type, TypeDamageMultiplier, getTypeDamageMultiplier } from './data/type';
import { getLevelTotalExp } from './data/exp';
import { Stat } from './data/pokemon-stat';
import { AttackTypeBoosterModifier, DamageMoneyRewardModifier, EnemyDamageBoosterModifier, EnemyDamageReducerModifier, HiddenAbilityRateBoosterModifier, PokemonBaseStatModifier, PokemonHeldItemModifier, ShinyRateBoosterModifier, SurviveDamageModifier, TempBattleStatBoosterModifier } from './modifier/modifier';
import { AttackTypeBoosterModifier, DamageMoneyRewardModifier, EnemyDamageBoosterModifier, EnemyDamageReducerModifier, HiddenAbilityRateBoosterModifier, PokemonBaseStatModifier, PokemonHeldItemModifier, PokemonNatureWeightModifier, ShinyRateBoosterModifier, SurviveDamageModifier, TempBattleStatBoosterModifier } from './modifier/modifier';
import { PokeballType } from './data/pokeball';
import { Gender } from './data/gender';
import { initMoveAnim, loadMoveAnimAssets } from './data/battle-anims';
@ -529,9 +529,10 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
}
} else {
value += 5;
const natureStatMultiplier = getNatureStatMultiplier(this.nature, s);
if (natureStatMultiplier !== 1)
value = Math[natureStatMultiplier > 1 ? 'ceil' : 'floor'](value * natureStatMultiplier);
const natureStatMultiplier = new Utils.NumberHolder(getNatureStatMultiplier(this.nature, s));
this.scene.applyModifier(PokemonNatureWeightModifier, this.isPlayer(), this, natureStatMultiplier);
if (natureStatMultiplier.value !== 1)
value = Math.max(Math[natureStatMultiplier.value > 1 ? 'ceil' : 'floor'](value * natureStatMultiplier.value), 1);
value = Math.min(value, 99999);
}
this.stats[s] = value;

View File

@ -75,6 +75,9 @@ export default class Trainer extends Phaser.GameObjects.Container {
const strength = partyTemplate.getStrength(i)
switch (strength) {
case TrainerPartyMemberStrength.WEAKEST:
multiplier = 0.85;
break;
case TrainerPartyMemberStrength.WEAKER:
multiplier = 0.95;
break;