diff -ruN tree/src/helpers/animations.js mod/src/helpers/animations.js
--- tree/src/helpers/animations.js 2026-10-30 01:06:41.000000000 -0300
+++ mod/src/helpers/animations.js 2026-11-02 20:20:14.103826317 -0300
@@ -68,22 +68,4 @@
frameRate: 10
};
scene.anims.create(config);
- config = {
- key: 'splash',
- frames: scene.anims.generateFrameNames('splash', {
- start: 0,
- end: 4
- }),
- frameRate: 30
- };
- scene.anims.create(config);
- config = {
- key: 'break',
- frames: scene.anims.generateFrameNames('break', {
- start: 0,
- end: 4
- }),
- frameRate: 30
- };
- scene.anims.create(config);
}
diff -ruN tree/src/helpers/dialog.js mod/src/helpers/dialog.js
--- tree/src/helpers/dialog.js 2026-10-30 01:06:41.000000000 -0300
+++ mod/src/helpers/dialog.js 2026-11-02 20:20:14.105206260 -0300
@@ -15,7 +15,6 @@
// Add child elements
this.elements = scene.add.group();
this.elements.add(scene.add.bitmapText(x + 16, y + 16, 'font', title, 8));
- this.elements.add(scene.add.sprite(x + width - 42, y + height - 47, portrait));
buttons.forEach((button, index) => {
this.elements.add(new BuyButton(scene, this.elements, x + 16, y + 32 + index * 24, button));
});
diff -ruN tree/src/index.html mod/src/index.html
--- tree/src/index.html 2026-10-30 01:06:41.000000000 -0300
+++ mod/src/index.html 2026-11-02 20:20:26.011922004 -0300
@@ -3,6 +3,7 @@
+
PepperTown
diff -ruN tree/src/scenes/BootScene.js mod/src/scenes/BootScene.js
--- tree/src/scenes/BootScene.js 2026-10-30 01:06:41.000000000 -0300
+++ mod/src/scenes/BootScene.js 2026-11-02 20:20:14.103425852 -0300
@@ -58,32 +58,12 @@
frameHeight: 15,
spacing: 1
});
- this.load.spritesheet('break', 'assets/images/break01.png', {
- frameWidth: 64,
- frameHeight: 64
- });
- this.load.spritesheet('splash', 'assets/images/splash04.png', {
- frameWidth: 64,
- frameHeight: 64
- });
-
- this.load.image('title', 'assets/images/title.png');
this.load.image('win', 'assets/images/win.png');
this.load.image('bar-back', 'assets/images/bar-back.png');
this.load.image('bar-front', 'assets/images/bar-front.png');
this.load.image('select-frame', 'assets/images/select-frame.png');
this.load.image('dialog-back', 'assets/images/dialog-back.png');
this.load.image('hand', 'assets/images/hand.png');
- ['magic', 'item', 'armor', 'weapon'].forEach(shop => {
- const key = 'portrait-' + shop;
- this.load.image(key, 'assets/images/' + key + '.png');
- })
-
- // Music to play. It's not properly edited for an continous loop, but game play experience isn't really the aim of this repository either.
- this.load.audio('overworld', [
- 'assets/music/overworld.ogg',
- 'assets/music/overworld.mp3'
- ]);
this.load.audio('coins', [
'assets/audio/coins.ogg',
diff -ruN tree/src/scenes/GameScene.js mod/src/scenes/GameScene.js
--- tree/src/scenes/GameScene.js 2026-10-30 01:06:41.000000000 -0300
+++ mod/src/scenes/GameScene.js 2026-11-02 20:20:14.104844045 -0300
@@ -21,8 +21,6 @@
this.attractMode = this.registry.get('attractMode');
this.win = null;
- // Add and play the music
- this.music = this.sound.add('overworld');
this.sounds = {
buy: this.sound.add('buy'),
close: this.sound.add('close'),
@@ -88,13 +86,6 @@
this.createHUD();
this.coinGroup = this.add.group();
- this.music.play({
- loop: true
- });
- this.music.volume = 0.25;
- if (this.attractMode) {
- this.music.volume = 0;
- }
// If the game ended while physics was disabled
this.physics.world.resume();
diff -ruN tree/src/scenes/TitleScene.js mod/src/scenes/TitleScene.js
--- tree/src/scenes/TitleScene.js 2026-10-30 01:06:41.000000000 -0300
+++ mod/src/scenes/TitleScene.js 2026-11-02 20:20:14.105504557 -0300
@@ -7,7 +7,7 @@
preload() {
}
create() {
- this.title = this.add.sprite(this.sys.game.config.width / 2, 16 * 7, 'title');
+ this.title = this.add.bitmapText(this.sys.game.config.width / 2 - 8 * 8, 16 * 6, 'font', 'PEPPERTOWN', 16);
this.attractMode = this.scene.launch('GameScene');
this.scene.bringToTop();
diff -ruN tree/src/sprites/girl.js mod/src/sprites/girl.js
--- tree/src/sprites/girl.js 2026-10-30 01:06:41.000000000 -0300
+++ mod/src/sprites/girl.js 2026-11-02 20:20:14.104551206 -0300
@@ -168,7 +168,6 @@
this.health.value -= enemy.damage * this.scene.defenseFactor;
this.wasHurt = WAS_HURT;
this.scene.playSoundBank('hit', 0.25);
- this.scene.coinGroup.add(new Wham(this.scene, this.x, this.y, 'splash', 'splash'));
}
this.ai.state = 'fighting';
this.ai.target = enemy;
diff -ruN tree/src/sprites/slime.js mod/src/sprites/slime.js
--- tree/src/sprites/slime.js 2026-10-30 01:06:41.000000000 -0300
+++ mod/src/sprites/slime.js 2026-11-02 20:20:14.104192783 -0300
@@ -86,7 +86,6 @@
die(enemy, damage, soundKey) {
this.scene.playSoundBank(soundKey, 0.5);
this.health.value -= damage;
- this.scene.coinGroup.add(new Wham(this.scene, this.x, this.y, 'break', 'break'));
if (this.health.value <= 0) {
this.alive = false;
enemy.scene.onKill(enemy.health.max, enemy.x, enemy.y);
diff -ruN tree/webpack.fredygames.config.js mod/webpack.fredygames.config.js
--- tree/webpack.fredygames.config.js 1969-12-31 21:00:00.000000000 -0300
+++ mod/webpack.fredygames.config.js 2026-11-02 20:20:25.980234909 -0300
@@ -0,0 +1,55 @@
+// Config de build do FredyGames. O webpack.production.config.js do autor usa a API antiga do clean-webpack-plugin e do
+// copy-webpack-plugin (versoes 4 e 10 instaladas pelo yarn.lock nao a aceitam); este faz o mesmo (bundle em build/js/bundle.js,
+// index.html e pasta assets/ copiada) sem limpar a pasta e sem os arquivos de assets/ que ficam de fora (ver o patch).
+var path = require('path')
+var webpack = require('webpack')
+var HtmlWebpackPlugin = require('html-webpack-plugin')
+var CopyWebpackPlugin = require('copy-webpack-plugin')
+
+module.exports = {
+ mode: 'production',
+ entry: { app: [path.resolve(__dirname, 'src/main.js')] },
+ output: {
+ path: path.resolve(__dirname, 'build'),
+ publicPath: './',
+ filename: 'js/bundle.js'
+ },
+ plugins: [
+ new webpack.DefinePlugin({
+ __DEV__: JSON.stringify(false),
+ WEBGL_RENDERER: true,
+ CANVAS_RENDERER: true
+ }),
+ new HtmlWebpackPlugin({
+ filename: 'index.html',
+ template: './src/index.html',
+ chunks: ['app'],
+ minify: false,
+ hash: false
+ }),
+ new CopyWebpackPlugin({
+ patterns: [{
+ from: 'assets',
+ to: 'assets',
+ globOptions: {
+ ignore: [
+ '**/music/**',
+ '**/images/portrait-*.png',
+ '**/images/title.png',
+ '**/images/break01.png',
+ '**/images/splash04.png'
+ ]
+ }
+ }]
+ })
+ ],
+ module: {
+ rules: [
+ { test: /\.js$/, use: ['babel-loader'], include: path.join(__dirname, 'src') },
+ { test: /phaser-split\.js$/, use: 'raw-loader' },
+ { test: [/\.vert$/, /\.frag$/], use: 'raw-loader' }
+ ]
+ },
+ optimization: { minimize: true },
+ performance: { hints: false }
+}