diff --git a/src/commands/use.ts b/src/commands/use.ts index fe4d24a..8d66f42 100644 --- a/src/commands/use.ts +++ b/src/commands/use.ts @@ -1,5 +1,5 @@ import { createBotCommand } from "@twurple/easy-bot"; -import { useBlaster } from "../lib/items"; +import { useBlaster, useSilverBullet } from "../lib/items"; import api from "../lib/api"; export default createBotCommand('use', async (params, { say, broadcasterId, userId }) => { @@ -7,11 +7,16 @@ export default createBotCommand('use', async (params, { say, broadcasterId, user if (params[0] === undefined) return - switch(params[0].toLowerCase()) { + switch (params[0].toLowerCase()) { case 'blaster': if (params[1] === undefined) return await useBlaster(broadcasterId, user!, params[1], say) - break + break + case 'silver': + case 'silverbullet': + if (params[1] === undefined) return + await useSilverBullet(broadcasterId, user!, params[1], say) + break default: await say(`${params[0]} does not exist mandoooYikes`) } diff --git a/src/lib/items.ts b/src/lib/items.ts index 6e743b0..f403895 100644 --- a/src/lib/items.ts +++ b/src/lib/items.ts @@ -28,9 +28,12 @@ export async function changeItemCount(user: HelixUser, item: string, amount = -1 export async function useBlaster(broadcasterId: string, attacker: HelixUser, targetname: string, say: (arg0: string) => Promise) { const target = await api.users.getUserByName(targetname) + const itemResult = await changeItemCount(attacker, 'blaster') + + if (!itemResult.result && itemResult.reason === 'negative') { await say('You have no blasters mandoooYikes'); return } + const result = await timeout(broadcasterId, target!, 60, `You got blasted by ${attacker.name}`) if (result.status) { - const itemResult = await changeItemCount(attacker, 'blaster') await say(`${targetname} got mandoooGun by ${attacker.name}! mandoooGOTTEM ${attacker.name} has ${itemResult.count} blaster${itemResult.count === 1 ? '' : 's'} remaining`) await addTimeoutToDB(attacker, target!, 'blaster') } else { @@ -48,3 +51,30 @@ export async function useBlaster(broadcasterId: string, attacker: HelixUser, tar } } } + +export async function useSilverBullet(broadcasterId: string, attacker: HelixUser, targetname: string, say: (arg0: string) => Promise) { + const target = await api.users.getUserByName(targetname) + + const itemResult = await changeItemCount(attacker, 'silverbullet') + + if (!itemResult.result && itemResult.reason === 'negative') { await say('You have no silver bullets mandoooYikes'); return } + + const result = await timeout(broadcasterId, target!, 60 * 60 * 24, `You got hit by a silver bullet fired by ${attacker.name}`) + if (result.status) { + await say(`${target?.name} mandoooSalute mandoooSalute mandoooSalute mandoooSalute mandoooSalute mandoooSalute mandoooSalute mandoooSalute mandoooSalute mandoooSalute mandoooSalute mandoooSalute mandoooSalute mandoooSalute mandoooSalute mandoooSalute mandoooSalute mandoooSalute mandoooSalute mandoooSalute mandoooSalute `) + await addTimeoutToDB(attacker, target!, 'silverbullet') + } else { + switch (result.reason) { + case 'noexist': + await say(`${targetname} doesn't exist!`) + break + case 'banned': + await say(`${targetname} is already dead!`) + break + case 'unknown': + await say(`NO!`) + await timeout(broadcasterId, attacker, 60, "NO!") + break + } + } +}