diff --git a/apps/game/assets/chars/hero_lamp.png b/apps/game/assets/chars/hero_lamp.png new file mode 100644 index 0000000..d7f4891 --- /dev/null +++ b/apps/game/assets/chars/hero_lamp.png Binary files differ diff --git a/apps/game/src/Game.ts b/apps/game/src/Game.ts index 4cb6fcc..a3aa148 100644 --- a/apps/game/src/Game.ts +++ b/apps/game/src/Game.ts @@ -74,7 +74,8 @@ 'tiles/wire', 'tiles/rail', 'tiles/stairs', - 'tiles/machine' + 'tiles/machine', + 'chars/hero_lamp' ]; /** Ключи аудио (WAV): sfx + амбиент-лупы областей (реестр в data/audio.ts). */ diff --git a/apps/game/src/scenes/LocationScene.ts b/apps/game/src/scenes/LocationScene.ts index 9ac2de6..ecf3292 100644 --- a/apps/game/src/scenes/LocationScene.ts +++ b/apps/game/src/scenes/LocationScene.ts @@ -63,7 +63,7 @@ import { enemyTextures, heroTextures, tileTextures } from '../data/assetSets'; /** Лампа героя: тёплый, компактный, слегка мерцает (прорезает ночную тьму). */ -const HERO_LAMP: HeroLampDef = { color: 0xf2b45a, radius: 1.6, intensity: 0.85, flicker: 0.12 }; +const HERO_LAMP: HeroLampDef = { color: 0xf2b45a, radius: 2.0, intensity: 1.0, flicker: 0.12 }; /** * Локация «Выжженные луга»: карта, герой, NPC, диалоги, бой со сгустками, автосейв по Esc. @@ -207,6 +207,12 @@ this.heroMotion = new SpriteMotion(this.player.view, { blink: { period: 0.25, duty: 1 } }); this.game.engine.fx.add(this.heroMotion); + // Видимый фонарь на поясе (правый бок): свет HERO_LAMP — «от фонаря». + const lampSprite = new Sprite(this.game.assets.texture('chars/hero_lamp')); + lampSprite.anchor.set(0.5); + lampSprite.position.set(4, -10); + this.player.view.addChild(lampSprite); + // Герой и NPC — в один depth-слой: глубина = tx + ty (кто юго-восточнее, тот ближе). this.actors.add(this.player.view, startTile.x, startTile.y); this.interactViews = new InteractableViews({ diff --git a/apps/game/tools/pixelart/gen.mjs b/apps/game/tools/pixelart/gen.mjs index 0d3a240..b0797be 100644 --- a/apps/game/tools/pixelart/gen.mjs +++ b/apps/game/tools/pixelart/gen.mjs @@ -935,6 +935,23 @@ save(traderMila, 'chars/trader_mila.png'); save(clint, 'chars/clint.png'); +// ---------- фонарь героя (7x8, латунь B*, тёплое стекло F*) ---------- +// Вешается ребёнком на спрайт героя (пояс, правый бок): свет лампы — «от фонаря». +const heroLamp = fromAscii( + [ + '...B...', + '..BBB..', + '.B1F1B.', + '.BF2FB.', + '.BF2FB.', + '.B1F1B.', + '..B1B..', + '...B...' + ], + { B: 'B0', 1: 'B1', F: 'F1', 2: 'B2' } +); +save(heroLamp, 'chars/hero_lamp.png'); + // ---------- безгласный олень (пейзажная фауна) ---------- // Выцветший: серо-оливковые G*/M2, никаких тёплых пикселей — голос забран.