Skip to content

Commit

Permalink
new stream - new rework!
Browse files Browse the repository at this point in the history
  • Loading branch information
hmbanan666 committed Mar 26, 2024
1 parent 80ab0f4 commit 0c4a537
Show file tree
Hide file tree
Showing 24 changed files with 759 additions and 181 deletions.
41 changes: 41 additions & 0 deletions EVENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
## 2024-03-26

- Появился новый ресурс: камень
- Новый навык: Шахтер. Прокачивается в процессе добычи камня
- Теперь можно купить топор
- Топор ломается при каждом использовании
- Разная скорость добычи: руками и при использовании инструмента

## 2024-03-25

- Фаза Альфа-1 окончена: собрали первую 1000 древесины в деревне
- Придумали с bezsovesty идею добавить аудио-комнату, чтобы можно было общаться с игроками

## 2024-03-24

- Команда !продать
- Инвентарь игрока
- Первый навык: Лесоруб. Прокачивается в процессе добычи древесины

## 2024-03-22

- Анимация животных. Зайцы и волк двигаются по экрану
- Рубашка игрока отображается отдельно, генерируется случайный цвет

## 2024-03-21

- Отображение топора при рубке дерева
- Анимация у деревьев
- Топ игроков по репутации: топ поддержавших деревню

## 2024-03-20

- Данные начали собираться в БД
- Появился первый ресурс - древесина
- Запустили фазу Альфа-1: начался сбор древесины, команда !дар
- Репутация в награду за пожертвования
- Первые звуки: звук леса и рубки деревьев

## 2024-03-18

- Первый стрим с игрой
81 changes: 78 additions & 3 deletions apps/api/src/bot.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,14 @@ import { promises as fs } from "node:fs";
import { RefreshingAuthProvider } from "@twurple/auth";
import { Bot, createBotCommand } from "@twurple/easy-bot";
import {
buyAxeFromDealer,
createCommand,
donateWoodFromPlayerInventory,
findOrCreatePlayer,
findStoneToMine,
findTreeToChop,
getInventory,
reserveStone,
reserveTree,
sellWoodFromPlayerInventory,
setPlayerMovingToTarget,
Expand Down Expand Up @@ -69,7 +72,7 @@ export async function serveBot() {

await reserveTree(tree.id);

// Send player to chop
// Send player to tree
await setPlayerMovingToTarget({
id: player.id,
targetId: tree.id,
Expand All @@ -78,6 +81,38 @@ export async function serveBot() {
});
},
),
createBotCommand(
"добывать",
async (params, { userId, userName, reply }) => {
console.log("добывать", userId, userName, params);

const player = await findOrCreatePlayer({
twitchId: userId,
userName,
});
if (!player || player.isBusy) {
void reply(`${userName}, ты пока занят(а).`);
return;
}

const stone = await findStoneToMine();
if (!stone || !stone.id) {
void reply(
`${userName}, нет доступного камня. Может скоро освободится?`,
);
return;
}

await reserveStone(stone.id);

await setPlayerMovingToTarget({
id: player.id,
targetId: stone.id,
x: stone.x,
y: stone.y,
});
},
),
createBotCommand(
"подарить",
async (params, { userId, userName, reply }) => {
Expand Down Expand Up @@ -106,8 +141,9 @@ export async function serveBot() {
});

void reply(
`${userName}, ты подарил деревне всю древесину! Твоя репутация возросла.`,
`${userName}, ты подарил(а) деревне всю древесину! Твоя репутация возросла.`,
);
return;
}

void reply(
Expand Down Expand Up @@ -142,14 +178,53 @@ export async function serveBot() {
command: "!продать",
});

void reply(`${userName}, ты продал всю древесину торговцу!`);
void reply(`${userName}, ты продал(а) всю древесину торговцу!`);
return;
}

void reply(
`${userName}, укажи конкретнее, например: !продать древесину`,
);
},
),
createBotCommand(
"купить",
async (params, { userId, userName, reply }) => {
console.log("купить", userId, userName, params);

const player = await findOrCreatePlayer({
twitchId: userId,
userName,
});
const items = await getInventory(player.id);

if (params[0] === "топор") {
// Find if already have some
const axe = items.find((item) => item.type === "AXE");
if (axe) {
// No way
void reply(`${userName}, у тебя уже есть топор.`);
return;
}

const result = await buyAxeFromDealer(player.id);
if (!result) {
void reply(`${userName}, неа.`);
return;
}

await createCommand({
playerId: player.id,
command: "!купить",
});

void reply(`${userName}, ты купил(а) топор у торговца!`);
return;
}

void reply(`${userName}, укажи конкретнее, например: !купить топор`);
},
),
],
});

Expand Down
Loading

0 comments on commit 0c4a537

Please sign in to comment.