diff --git a/src/games/duck.js b/src/games/duck.js index 61a88c3..f881a7a 100755 --- a/src/games/duck.js +++ b/src/games/duck.js @@ -1,6 +1,7 @@ 'use strict'; const config = require('config'); +const { intervalToDuration } = require('date-fns'); const style = require('../utils/style'); const pickRandom = require('../utils/pick-random'); @@ -56,11 +57,18 @@ function onCommand(args, context) { } const hit = Math.random() > config.duck.missRatio; - const time = ((new Date().getTime() - duck.getTime()) / 1000).toFixed(3); + const time = new Date().getTime() - duck.getTime(); + + const distance = time < 600 * 1000 // show exact time up to ten minutes + ? `${(time / 1000).toFixed(3)} seconds` + : Object.entries(intervalToDuration({ start: duck, end: new Date() })) + .filter(([, value]) => value > 0) + .map(([key, value]) => `${value} ${key}`) + .join(', '); if (['bang', 'shoot'].includes(context.command)) { if (hit) { - context.sendMessage(`You shot a duck in ${style.bold(`${time} seconds`)}, ${context.user.prefixedUsername}`, context.room.id); + context.sendMessage(`${context.user.prefixedUsername}: You shot a duck in ${style.bold(style.red(distance))}`, context.room.id); launchDuck(context); context.setPoints(context.user, 1, { key: 'bang' }); @@ -83,7 +91,7 @@ function onCommand(args, context) { if (['bef', 'befriend'].includes(context.command)) { if (hit) { - context.sendMessage(`You befriended a duck in ${style.bold(style.green(`${time} seconds`))}, ${context.user.prefixedUsername}`, context.room.id); + context.sendMessage(`${context.user.prefixedUsername}: You befriended a duck in ${style.bold(style.sky(distance))}`, context.room.id); launchDuck(context); context.setPoints(context.user, 1, { key: 'befriend' });