update naming convention of sprites
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"textures": [
|
"textures": [
|
||||||
{
|
{
|
||||||
"image": "berry_bush.png",
|
"image": "berries_abound_bush.png",
|
||||||
"format": "RGBA8888",
|
"format": "RGBA8888",
|
||||||
"size": {
|
"size": {
|
||||||
"w": 49,
|
"w": 49,
|
Before Width: | Height: | Size: 719 B After Width: | Height: | Size: 719 B |
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"textures": [
|
"textures": [
|
||||||
{
|
{
|
||||||
"image": "mad_scientist_m.png",
|
"image": "dark_deal_scientist.png",
|
||||||
"format": "RGBA8888",
|
"format": "RGBA8888",
|
||||||
"size": {
|
"size": {
|
||||||
"w": 46,
|
"w": 46,
|
Before Width: | Height: | Size: 920 B After Width: | Height: | Size: 920 B |
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"textures": [
|
"textures": [
|
||||||
{
|
{
|
||||||
"image": "b2w2_lady.png",
|
"image": "department_store_sale_lady.png",
|
||||||
"format": "RGBA8888",
|
"format": "RGBA8888",
|
||||||
"size": {
|
"size": {
|
||||||
"w": 399,
|
"w": 399,
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 378 B After Width: | Height: | Size: 378 B |
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"textures": [
|
"textures": [
|
||||||
{
|
{
|
||||||
"image": "teacher.png",
|
"image": "field_trip_teacher.png",
|
||||||
"format": "RGBA8888",
|
"format": "RGBA8888",
|
||||||
"size": {
|
"size": {
|
||||||
"w": 43,
|
"w": 43,
|
Before Width: | Height: | Size: 727 B After Width: | Height: | Size: 727 B |
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"textures": [
|
"textures": [
|
||||||
{
|
{
|
||||||
"image": "carnival_game.png",
|
"image": "fun_and_games_game.png",
|
||||||
"format": "RGBA8888",
|
"format": "RGBA8888",
|
||||||
"size": {
|
"size": {
|
||||||
"w": 38,
|
"w": 38,
|
Before Width: | Height: | Size: 517 B After Width: | Height: | Size: 517 B |
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"textures": [
|
"textures": [
|
||||||
{
|
{
|
||||||
"image": "carnival_man.png",
|
"image": "fun_and_games_man.png",
|
||||||
"format": "RGBA8888",
|
"format": "RGBA8888",
|
||||||
"size": {
|
"size": {
|
||||||
"w": 50,
|
"w": 50,
|
Before Width: | Height: | Size: 833 B After Width: | Height: | Size: 833 B |
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"textures": [
|
"textures": [
|
||||||
{
|
{
|
||||||
"image": "carnival_wobbuffet.png",
|
"image": "fun_and_games_wobbuffet.png",
|
||||||
"format": "RGBA8888",
|
"format": "RGBA8888",
|
||||||
"size": {
|
"size": {
|
||||||
"w": 45,
|
"w": 45,
|
Before Width: | Height: | Size: 772 B After Width: | Height: | Size: 772 B |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"textures": [
|
"textures": [
|
||||||
{
|
{
|
||||||
"image": "chest_blue.png",
|
"image": "mysterious_chest_blue.png",
|
||||||
"format": "RGBA8888",
|
"format": "RGBA8888",
|
||||||
"size": {
|
"size": {
|
||||||
"w": 54,
|
"w": 54,
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"textures": [
|
"textures": [
|
||||||
{
|
{
|
||||||
"image": "chest_red.png",
|
"image": "mysterious_chest_red.png",
|
||||||
"format": "RGBA8888",
|
"format": "RGBA8888",
|
||||||
"size": {
|
"size": {
|
||||||
"w": 54,
|
"w": 54,
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"textures": [
|
"textures": [
|
||||||
{
|
{
|
||||||
"image": "warehouse_crate.png",
|
"image": "part_timer_crate.png",
|
||||||
"format": "RGBA8888",
|
"format": "RGBA8888",
|
||||||
"size": {
|
"size": {
|
||||||
"w": 71,
|
"w": 71,
|
Before Width: | Height: | Size: 868 B After Width: | Height: | Size: 868 B |
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"textures": [
|
"textures": [
|
||||||
{
|
{
|
||||||
"image": "bait.png",
|
"image": "safari_zone_bait.png",
|
||||||
"format": "RGBA8888",
|
"format": "RGBA8888",
|
||||||
"size": {
|
"size": {
|
||||||
"w": 14,
|
"w": 14,
|
Before Width: | Height: | Size: 277 B After Width: | Height: | Size: 277 B |
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"textures": [
|
"textures": [
|
||||||
{
|
{
|
||||||
"image": "mud.png",
|
"image": "safari_zone_mud.png",
|
||||||
"format": "RGBA8888",
|
"format": "RGBA8888",
|
||||||
"size": {
|
"size": {
|
||||||
"w": 14,
|
"w": 14,
|
Before Width: | Height: | Size: 375 B After Width: | Height: | Size: 375 B |
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"textures": [
|
"textures": [
|
||||||
{
|
{
|
||||||
"image": "b2w2_veteran_m.png",
|
"image": "shady_vitamin_dealer.png",
|
||||||
"format": "RGBA8888",
|
"format": "RGBA8888",
|
||||||
"size": {
|
"size": {
|
||||||
"w": 424,
|
"w": 424,
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"textures": [
|
"textures": [
|
||||||
{
|
{
|
||||||
"image": "teleporter.png",
|
"image": "teleporting_hijinks_teleporter.png",
|
||||||
"format": "RGBA8888",
|
"format": "RGBA8888",
|
||||||
"size": {
|
"size": {
|
||||||
"w": 74,
|
"w": 74,
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"textures": [
|
"textures": [
|
||||||
{
|
{
|
||||||
"image": "training_gear.png",
|
"image": "training_session_gear.png",
|
||||||
"format": "RGBA8888",
|
"format": "RGBA8888",
|
||||||
"size": {
|
"size": {
|
||||||
"w": 76,
|
"w": 76,
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
@ -82,7 +82,7 @@ export const BerriesAboundEncounter: MysteryEncounter =
|
|||||||
const { spriteKey, fileRoot } = getSpriteKeysFromPokemon(bossPokemon);
|
const { spriteKey, fileRoot } = getSpriteKeysFromPokemon(bossPokemon);
|
||||||
encounter.spriteConfigs = [
|
encounter.spriteConfigs = [
|
||||||
{
|
{
|
||||||
spriteKey: "berry_bush",
|
spriteKey: "berries_abound_bush",
|
||||||
fileRoot: "mystery-encounters",
|
fileRoot: "mystery-encounters",
|
||||||
x: 25,
|
x: 25,
|
||||||
y: -6,
|
y: -6,
|
||||||
|
@ -94,7 +94,7 @@ export const DarkDealEncounter: MysteryEncounter =
|
|||||||
.withEncounterTier(MysteryEncounterTier.ROGUE)
|
.withEncounterTier(MysteryEncounterTier.ROGUE)
|
||||||
.withIntroSpriteConfigs([
|
.withIntroSpriteConfigs([
|
||||||
{
|
{
|
||||||
spriteKey: "mad_scientist_m",
|
spriteKey: "dark_deal_scientist",
|
||||||
fileRoot: "mystery-encounters",
|
fileRoot: "mystery-encounters",
|
||||||
hasShadow: true,
|
hasShadow: true,
|
||||||
},
|
},
|
||||||
|
@ -10,7 +10,7 @@ import { CombinationPokemonRequirement, HeldItemRequirement, MoneyRequirement }
|
|||||||
import { getEncounterText, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils";
|
import { getEncounterText, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils";
|
||||||
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
|
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
|
||||||
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
|
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
|
||||||
import { HealingBoosterModifier, HiddenAbilityRateBoosterModifier, LevelIncrementBoosterModifier, PokemonHeldItemModifier, PreserveBerryModifier } from "#app/modifier/modifier";
|
import { BerryModifier, HealingBoosterModifier, HiddenAbilityRateBoosterModifier, LevelIncrementBoosterModifier, PokemonHeldItemModifier, PreserveBerryModifier } from "#app/modifier/modifier";
|
||||||
import { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler";
|
import { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler";
|
||||||
import { applyModifierTypeToPlayerPokemon } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils";
|
import { applyModifierTypeToPlayerPokemon } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils";
|
||||||
import i18next from "#app/plugins/i18n";
|
import i18next from "#app/plugins/i18n";
|
||||||
@ -197,7 +197,7 @@ export const DelibirdyEncounter: MysteryEncounter =
|
|||||||
const modifier = encounter.misc.chosenModifier;
|
const modifier = encounter.misc.chosenModifier;
|
||||||
|
|
||||||
// Give the player a Candy Jar if they gave a Berry, and a Healing Charm for Reviver Seed
|
// Give the player a Candy Jar if they gave a Berry, and a Healing Charm for Reviver Seed
|
||||||
if (modifier.type.name.includes("Berry")) {
|
if (modifier instanceof BerryModifier) {
|
||||||
// Check if the player has max stacks of that Candy Jar already
|
// Check if the player has max stacks of that Candy Jar already
|
||||||
const existing = scene.findModifier(m => m instanceof LevelIncrementBoosterModifier) as LevelIncrementBoosterModifier;
|
const existing = scene.findModifier(m => m instanceof LevelIncrementBoosterModifier) as LevelIncrementBoosterModifier;
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ export const DepartmentStoreSaleEncounter: MysteryEncounter =
|
|||||||
.withSceneWaveRangeRequirement(CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES[0], 100)
|
.withSceneWaveRangeRequirement(CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES[0], 100)
|
||||||
.withIntroSpriteConfigs([
|
.withIntroSpriteConfigs([
|
||||||
{
|
{
|
||||||
spriteKey: "b2w2_lady",
|
spriteKey: "department_store_sale_lady",
|
||||||
fileRoot: "mystery-encounters",
|
fileRoot: "mystery-encounters",
|
||||||
hasShadow: true,
|
hasShadow: true,
|
||||||
x: -20,
|
x: -20,
|
||||||
|
@ -32,7 +32,7 @@ export const FieldTripEncounter: MysteryEncounter =
|
|||||||
hasShadow: true,
|
hasShadow: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
spriteKey: "teacher",
|
spriteKey: "field_trip_teacher",
|
||||||
fileRoot: "mystery-encounters",
|
fileRoot: "mystery-encounters",
|
||||||
hasShadow: true,
|
hasShadow: true,
|
||||||
},
|
},
|
||||||
|
@ -45,14 +45,14 @@ export const FunAndGamesEncounter: MysteryEncounter =
|
|||||||
.withSkipToFightInput(true)
|
.withSkipToFightInput(true)
|
||||||
.withIntroSpriteConfigs([
|
.withIntroSpriteConfigs([
|
||||||
{
|
{
|
||||||
spriteKey: "carnival_game",
|
spriteKey: "fun_and_games_game",
|
||||||
fileRoot: "mystery-encounters",
|
fileRoot: "mystery-encounters",
|
||||||
hasShadow: false,
|
hasShadow: false,
|
||||||
x: 0,
|
x: 0,
|
||||||
y: 6,
|
y: 6,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
spriteKey: "carnival_wobbuffet",
|
spriteKey: "fun_and_games_wobbuffet",
|
||||||
fileRoot: "mystery-encounters",
|
fileRoot: "mystery-encounters",
|
||||||
hasShadow: true,
|
hasShadow: true,
|
||||||
x: -28,
|
x: -28,
|
||||||
@ -60,7 +60,7 @@ export const FunAndGamesEncounter: MysteryEncounter =
|
|||||||
yShadow: 6
|
yShadow: 6
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
spriteKey: "carnival_man",
|
spriteKey: "fun_and_games_man",
|
||||||
fileRoot: "mystery-encounters",
|
fileRoot: "mystery-encounters",
|
||||||
hasShadow: true,
|
hasShadow: true,
|
||||||
x: 40,
|
x: 40,
|
||||||
|
@ -33,7 +33,7 @@ export const LostAtSeaEncounter: MysteryEncounter = MysteryEncounterBuilder.with
|
|||||||
.withSceneWaveRangeRequirement(...CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES)
|
.withSceneWaveRangeRequirement(...CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES)
|
||||||
.withIntroSpriteConfigs([
|
.withIntroSpriteConfigs([
|
||||||
{
|
{
|
||||||
spriteKey: "buoy",
|
spriteKey: "lost_at_sea_buoy",
|
||||||
fileRoot: "mystery-encounters",
|
fileRoot: "mystery-encounters",
|
||||||
hasShadow: false,
|
hasShadow: false,
|
||||||
x: 20,
|
x: 20,
|
||||||
|
@ -37,7 +37,7 @@ export const MysteriousChestEncounter: MysteryEncounter =
|
|||||||
.withCatchAllowed(true)
|
.withCatchAllowed(true)
|
||||||
.withIntroSpriteConfigs([
|
.withIntroSpriteConfigs([
|
||||||
{
|
{
|
||||||
spriteKey: "chest_blue",
|
spriteKey: "mysterious_chest_blue",
|
||||||
fileRoot: "mystery-encounters",
|
fileRoot: "mystery-encounters",
|
||||||
hasShadow: true,
|
hasShadow: true,
|
||||||
y: 8,
|
y: 8,
|
||||||
@ -46,7 +46,7 @@ export const MysteriousChestEncounter: MysteryEncounter =
|
|||||||
disableAnimation: true, // Re-enabled after option select
|
disableAnimation: true, // Re-enabled after option select
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
spriteKey: "chest_red",
|
spriteKey: "mysterious_chest_red",
|
||||||
fileRoot: "mystery-encounters",
|
fileRoot: "mystery-encounters",
|
||||||
hasShadow: false,
|
hasShadow: false,
|
||||||
y: 8,
|
y: 8,
|
||||||
|
@ -27,7 +27,7 @@ export const PartTimerEncounter: MysteryEncounter =
|
|||||||
.withSceneWaveRangeRequirement(...CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES)
|
.withSceneWaveRangeRequirement(...CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES)
|
||||||
.withIntroSpriteConfigs([
|
.withIntroSpriteConfigs([
|
||||||
{
|
{
|
||||||
spriteKey: "warehouse_crate",
|
spriteKey: "part_timer_crate",
|
||||||
fileRoot: "mystery-encounters",
|
fileRoot: "mystery-encounters",
|
||||||
hasShadow: false,
|
hasShadow: false,
|
||||||
y: 6,
|
y: 6,
|
||||||
|
@ -79,8 +79,8 @@ export const SafariZoneEncounter: MysteryEncounter =
|
|||||||
scene.loadSe("PRSFX- Bug Bite", "battle_anims", "PRSFX- Bug Bite.wav");
|
scene.loadSe("PRSFX- Bug Bite", "battle_anims", "PRSFX- Bug Bite.wav");
|
||||||
scene.loadSe("PRSFX- Sludge Bomb2", "battle_anims", "PRSFX- Sludge Bomb2.wav");
|
scene.loadSe("PRSFX- Sludge Bomb2", "battle_anims", "PRSFX- Sludge Bomb2.wav");
|
||||||
scene.loadSe("PRSFX- Taunt2", "battle_anims", "PRSFX- Taunt2.wav");
|
scene.loadSe("PRSFX- Taunt2", "battle_anims", "PRSFX- Taunt2.wav");
|
||||||
scene.loadAtlas("bait", "mystery-encounters");
|
scene.loadAtlas("safari_zone_bait", "mystery-encounters");
|
||||||
scene.loadAtlas("mud", "mystery-encounters");
|
scene.loadAtlas("safari_zone_mud", "mystery-encounters");
|
||||||
// Clear enemy party
|
// Clear enemy party
|
||||||
scene.currentBattle.enemyParty = [];
|
scene.currentBattle.enemyParty = [];
|
||||||
await transitionMysteryEncounterIntroVisuals(scene);
|
await transitionMysteryEncounterIntroVisuals(scene);
|
||||||
@ -322,7 +322,7 @@ async function throwBait(scene: BattleScene, pokemon: EnemyPokemon): Promise<boo
|
|||||||
const originalY: number = pokemon.y;
|
const originalY: number = pokemon.y;
|
||||||
|
|
||||||
const fpOffset = pokemon.getFieldPositionOffset();
|
const fpOffset = pokemon.getFieldPositionOffset();
|
||||||
const bait: Phaser.GameObjects.Sprite = scene.addFieldSprite(16 + 75, 80 + 25, "bait", "0001.png");
|
const bait: Phaser.GameObjects.Sprite = scene.addFieldSprite(16 + 75, 80 + 25, "safari_zone_bait", "0001.png");
|
||||||
bait.setOrigin(0.5, 0.625);
|
bait.setOrigin(0.5, 0.625);
|
||||||
scene.field.add(bait);
|
scene.field.add(bait);
|
||||||
|
|
||||||
@ -388,7 +388,7 @@ async function throwMud(scene: BattleScene, pokemon: EnemyPokemon): Promise<bool
|
|||||||
const originalY: number = pokemon.y;
|
const originalY: number = pokemon.y;
|
||||||
|
|
||||||
const fpOffset = pokemon.getFieldPositionOffset();
|
const fpOffset = pokemon.getFieldPositionOffset();
|
||||||
const mud: Phaser.GameObjects.Sprite = scene.addFieldSprite(16 + 75, 80 + 35, "mud", "0001.png");
|
const mud: Phaser.GameObjects.Sprite = scene.addFieldSprite(16 + 75, 80 + 35, "safari_zone_mud", "0001.png");
|
||||||
mud.setOrigin(0.5, 0.625);
|
mud.setOrigin(0.5, 0.625);
|
||||||
scene.field.add(mud);
|
scene.field.add(mud);
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ export const ShadyVitaminDealerEncounter: MysteryEncounter =
|
|||||||
yShadow: -5
|
yShadow: -5
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
spriteKey: "b2w2_veteran_m",
|
spriteKey: "shady_vitamin_dealer",
|
||||||
fileRoot: "mystery-encounters",
|
fileRoot: "mystery-encounters",
|
||||||
hasShadow: true,
|
hasShadow: true,
|
||||||
x: -12,
|
x: -12,
|
||||||
|
@ -44,7 +44,7 @@ export const TeleportingHijinksEncounter: MysteryEncounter =
|
|||||||
.withCatchAllowed(true)
|
.withCatchAllowed(true)
|
||||||
.withIntroSpriteConfigs([
|
.withIntroSpriteConfigs([
|
||||||
{
|
{
|
||||||
spriteKey: "teleporter",
|
spriteKey: "teleporting_hijinks_teleporter",
|
||||||
fileRoot: "mystery-encounters",
|
fileRoot: "mystery-encounters",
|
||||||
hasShadow: true,
|
hasShadow: true,
|
||||||
x: 4,
|
x: 4,
|
||||||
|
@ -38,7 +38,7 @@ export const TrainingSessionEncounter: MysteryEncounter =
|
|||||||
.withHideWildIntroMessage(true)
|
.withHideWildIntroMessage(true)
|
||||||
.withIntroSpriteConfigs([
|
.withIntroSpriteConfigs([
|
||||||
{
|
{
|
||||||
spriteKey: "training_gear",
|
spriteKey: "training_session_gear",
|
||||||
fileRoot: "mystery-encounters",
|
fileRoot: "mystery-encounters",
|
||||||
hasShadow: true,
|
hasShadow: true,
|
||||||
y: 6,
|
y: 6,
|
||||||
|
@ -43,7 +43,7 @@ import { Variant } from "#app/data/variant";
|
|||||||
* @param scene
|
* @param scene
|
||||||
*/
|
*/
|
||||||
export function doTrainerExclamation(scene: BattleScene) {
|
export function doTrainerExclamation(scene: BattleScene) {
|
||||||
const exclamationSprite = scene.add.sprite(0, 0, "exclaim");
|
const exclamationSprite = scene.add.sprite(0, 0, "encounter_exclaim");
|
||||||
exclamationSprite.setName("exclamation");
|
exclamationSprite.setName("exclamation");
|
||||||
scene.field.add(exclamationSprite);
|
scene.field.add(exclamationSprite);
|
||||||
scene.field.moveTo(exclamationSprite, scene.field.getAll().length - 1);
|
scene.field.moveTo(exclamationSprite, scene.field.getAll().length - 1);
|
||||||
|
@ -164,7 +164,7 @@ export class EncounterPhase extends BattlePhase {
|
|||||||
// Load Mystery Encounter Exclamation bubble and sfx
|
// Load Mystery Encounter Exclamation bubble and sfx
|
||||||
loadEnemyAssets.push(new Promise<void>(resolve => {
|
loadEnemyAssets.push(new Promise<void>(resolve => {
|
||||||
this.scene.loadSe("GEN8- Exclaim", "battle_anims", "GEN8- Exclaim.wav");
|
this.scene.loadSe("GEN8- Exclaim", "battle_anims", "GEN8- Exclaim.wav");
|
||||||
this.scene.loadImage("exclaim", "mystery-encounters");
|
this.scene.loadImage("encounter_exclaim", "mystery-encounters");
|
||||||
this.scene.load.once(Phaser.Loader.Events.COMPLETE, () => resolve());
|
this.scene.load.once(Phaser.Loader.Events.COMPLETE, () => resolve());
|
||||||
if (!this.scene.load.isLoading()) {
|
if (!this.scene.load.isLoading()) {
|
||||||
this.scene.load.start();
|
this.scene.load.start();
|
||||||
|