const {Direction, Position, Wielder} = wielder const projected = Wielder.activeItem()?.project(Position.tile, Direction.quantize(4)) if (projected?.length > 0) { const {Controlled, Emitter, Sound, Sprite} = wielder const {TileLayers, Water} = ecs.get(1) const layer = TileLayers.layer(0) Controlled.locked = 1 const [, direction] = Sprite.animation.split(':') Sprite.animation = ['idle', direction].join(':'); Sound.play('/resources/watering-can/water.wav'); for (const {x, y} of projected) { Emitter.emit({ entity: { Forces: {forceY: 100}, Position: { x: x * layer.tileSize.x + (layer.tileSize.x / 2), y: y * layer.tileSize.y - (layer.tileSize.y / 4), }, Sprite: { scaleX: 0.05, scaleY: 0.15, tint: 0x0022aa, }, Ttl: {ttl: 0.1}, }, fields: [ { path: ['Sprite', 'lightness'], value: [0.111, 0.666], }, ], frequency: 0.01, shape: { type: 'circle', payload: {radius: 4}, }, ttl: 0.5, }); } await wait(0.5); for (const {x, y} of projected) { const tileIndex = layer.area.x * y + x let w; if (Water.water[tileIndex]) { w = Water.water[tileIndex] } else { w = 0 } Water.water[tileIndex] = Math.min(255, 64 + w); } ecs.system('Water').schedule(); Controlled.locked = 0; }