Skip to content

Продлжение #5

@CEHR2005

Description

@CEHR2005

Продолжи откуда этот чат закончился:


Давай раз уж начали добавим еще историческую статистику

Прикинем, сколько всего ап было получеено от задач
сколько от ретро
сколько от кэшбека (с учетом, и без учета стоимости покупки в виде 3 ап за уровень)
и все остальное потенциально должно быть премии, в плане заработанного, а сумму заработоного мы уже считаем, из баланса + исторических трат
2:03 AM

Worked for 2m 17s
Добавил историческую статистику заработка в терминал.

Теперь выводит блок:

Исторический заработок: 283.4 AP
задачи 95.335
ретро 5.7
скидка 20 / чистыми 17
премии/прочее 165.365
Логика такая:

всего заработано = текущий баланс + исторические траты
Потом расклад:

задачи = все task_reward
ретро = все retro_bonus
скидка gross = 20
скидка net = 20 - 3 = 17, с учетом покупки первого уровня за 3 AP
премии/прочее = все остальное заработанное
В Discord-панели этот блок тоже появится как Исторический заработок.

Проверка прошла: 24 tests OK.

4 files changed
+146
-19
Undo

Review

src/yellka/service.py
src/yellka/cli.py
src/yellka/discord_bot.py
tests/test_economy.py

2:05 AM
учти что я начинал имея 24 АП
и вообще на
Баланс: 24 АП
SenchaPencha — 09.05.2026 1:10
-19.6 [Ядро Вычислений] [Код/Движок] (0.2 -> 0.55)

-4.5 [Директивы Приоритета] [Код/Движок] (+40%)

Баланс: 0.9 :Cry:
Сдал
ИИ врагов
Базовое поведение
поиск игрока
движение к игроку
Атаки
ближний бой
(3*0.77 = 2.31)
Баланс 3,21
SenchaPencha — 09.05.2026 1:17
-2.5 [Директивы Приоритета] [Код/Движок] (+40->+50%)

Баланс: 0,71 (ебать я легенда, на глазок прикидывал, ровно попал)
SenchaPencha — 09.05.2026 1:30
Сдал
ИИ врагов

Способности
специальные атаки
призывы
Реакции
получение урона
оглушение
страх
0,825*5=4,125

баланс: 4,835
Это закрыло
ИИ врагов
2.31+4.125=6,435*0.5=3,2175 (я ебал сколько цифр)
баланс: 8,0525
-0.0025 на благотворительность
баланс: 8,05
-4.4 [Ядро Вычислений] [Код/Движок] (0.55 -> 0.6)

-3 [Директивы Приоритета] [Код/Движок] (+60%)

Баланс: 0.6 :Cry:
Взаимодействие эффектов

Система стаков
наложение эффектов +0.96
обновление длительности +0.96
Баланс 2,52
Плюс вайб, 0.96 нравится :Rave:
SenchaPencha — 09.05.2026 1:39
Контроль:
Притягивание +0.96
Расталкивание +0.96

Баланс: 4,44 (хихи)
-3.5 [Директивы Приоритета] [Код/Движок] (+70%)
баланс: 0,94
SenchaPencha — 09.05.2026 1:57
Урон:
Удар 1,02
Снаряд 1,02
Взрыв в точке 1,02

Баланс 4 (ЛЕГЕНДАРНО)
-4 [Директивы Приоритета] [Код/Движок] (+80%)
баланс: 0 (ОХУЕТЬ)
Урон:
Волна по земле +1,08
Луч +1,08
Орб +1,08
Дождь +1,08
Область +1,08
Баланс
5,4
-4.5 [Директивы Приоритета] [Код/Движок] (+90%)
баланс: 0,9
1.02x3=3.06
1.08x5=5.4

8.46
Премия, Урон
+4,23
Баланс 5,13
-5 [Директивы Приоритета] [Код/Движок] (+100%)
баланс: 0,13
SenchaPencha — 09.05.2026 2:28
+Модификаторы:
Огонь
Лёд
Молния
Яд
по 1.2

-Ядро Вычислений] [Код/Движок] (0.6 -> 0.65)

баланс: 0,13
Кислота
Тьма
Свет
Ветер
по 1.3

-Ядро Вычислений] [Код/Движок] (0.65 -> 0.7)

баланс: 0,13
Камень
Кровь

= + 2.8

Баланс 2,93
Модификаторы премия
4,8+5,2+2.8 =12,8
Премия +6.4
Баланс 9,33
SenchaPencha — 09.05.2026 2:44
-5.6 Ядро Вычислений] [Код/Движок] (0.7 -> 0.75)

баланс: 3,7
Котроль
Замедление
Связывание
Замешательство
1.5*3=4.5

Баланс 8,2
-6 Ядро Вычислений] [Код/Движок] (0.75 -> 0.8)

баланс: 2,2
Котроль
Стан +1.6
Страх+1.6
Баланс: 5,4
[Кэшбек-Шина Терминала]
-3
+3.655
[Кэшбек-Шина Терминала]
-3
+3.655
[Кэшбек-Шина Терминала]
-3
+3.655
[Кэшбек-Шина Терминала]
-3
+3.655
[Кэшбек-Шина Терминала]
-3
+3.655

Баланс: 8,675
SenchaPencha — 09.05.2026 2:54
-4.8 Ядро Вычислений] [Код/Движок] (0.8 -> 0.85)

баланс: 3,875
Премия

Котроль
Замедление
Связывание
Замешательство
1.5*3=4.5
Притягивание +0.96
Расталкивание +0.96

Котроль
Стан +1.6
Замешательство +1.6

9,62/2=4,81

Премия +4,81

Баланс 8,685
-5.1 Ядро Вычислений] [Код/Движок] (0.85 -> 0.9)

баланс: 3,585
SenchaPencha — 09.05.2026 3:05
Ловушки:
Мина +1.8

Баланс = 5,385
(сука ебанные 0.015)
Ловушки:
Зона +1.8
Баланс: 7,185
-5.4 Ядро Вычислений] [Код/Движок] (0.9 -> 0.95)
Баланс: 1,785
Лечение:
Ицеление
Регенерация
Вампиризм*

1,9*3=4,9

Премия лечение
+2,45

Баланс = 9,135
-5.7 Ядро Вычислений] [Код/Движок] (0.95 ->1)
Баланс: 3,435
SenchaPencha — 09.05.2026 3:12
Поведенческие модификаторы:

Пробитие насквозь +2 (нихуя себе)
Замедление времени +2
Баланс: 7,435
-6 Ядро Вычислений] [Код/Движок] (1 ->1.05)
Баланс: 1,435
SenchaPencha — Вчера, в 2:21
(идея с артефактами в которые вставляются карты,
Елка сказал записать 0.2, но тссс, посмотрим)
SenchaPencha — Вчера, в 2:36
Поведенческие модификаторы:
Цепь (Несколько целей)
Разделение
Возвращение
3x2.1

Ядро Вычислений] [Код/Движок] (1.05 ->1.1)
Баланс: 1,435
Орбита
Персонаж как цель
Автонаведение
3x2.2

ПРЕМИЯ
3x2.1=6,3
3x2.2=6,6
1x2 (Пробитие насквозь +2)=2
+7.45

Баланс: 15,485
SenchaPencha — Вчера, в 3:05
Призыв +2.2
Туррель +2.2
Тотем +2.2

Баланс: 22,085
[Протокол: Ретроспективная Индексация]
2) Единоразовый скидочный купон 20% на любой товар кроме подписочных
Баланс: 2.085
Клон +2.2
SenchaPencha — Вчера, в 3:15
Ретроспективная Индексация +42,065
Баланс: 46,35
:catBongosEXTREMEROCKCONCERT: :catBongosEXTREMEROCKCONCERT: :catBongosEXTREMEROCKCONCERT: :catBongosEXTREMEROCKCONCERT: :catBongosEXTREMEROCKCONCERT: :catBongosEXTREMEROCKCONCERT:
Премия (Призывы)
+4.4
Баланс: 50,75
SenchaPencha — Вчера, в 3:33
(+0.2 за то что камень падает)
SenchaPencha — Вчера, в 21:23
-44,1 Ядро Вычислений] [Код/Движок] (1.1 ->1.4)
Баланс: 6,65
Сдать
Щит +2.8
Премия 0.3x2x51=30,6
баланс: 37,25
-35.4 Ядро Вычислений] [Код/Движок] (1.4 ->1.6)
Баланс: 1,85
Барьер +3.2
Премия 0.2x2x52=20,8
Баланс: 25,85
-19.5 Ядро Вычислений] [Код/Движок] (1.6 ->1.7)
Баланс: 6,35
Отражение +3.4
Премия 0.1x2x53=10,6
SenchaPencha — Вчера, в 21:32
Баланс: 20,35
-10.2 Ядро Вычислений] [Код/Движок] (1.7 ->1.75)
Баланс: 10,15
Поглощение +3.5
Премия 0.05x2x54=5,4
Баланс: 19,05
-10.5 Ядро Вычислений] [Код/Движок] (1.75 ->1.8)
Баланс: 8,55

вот тебе все досоздания бота

Show more
2:06 AM

Worked for 1m 8s
Учел стартовые 24 AP.

Теперь исторический заработок считается так:

заработано = текущий баланс + исторические траты - стартовый капитал
Для твоей базы сейчас:

Баланс: 15.4 AP
Исторические траты: 268 AP
Стартовый капитал: 24 AP
Заработано: 15.4 + 268 - 24 = 259.4 AP
Терминал теперь показывает:

Исторический заработок: 259.4 AP
старт 24
задачи 95.335
ретро 5.7
скидка 20 / чистыми 17
премии/прочее 141.365
То есть 24 AP, с которыми ты начинал, больше не попадают в “заработано”.

Добавил настройку:

python -m yellka --db ./balance.sqlite3 history-settings --starting-balance 24
И уже применил ее к текущей БД. Проверка прошла: 24 tests OK.

4 files changed
+25
-5
Undo

Review

src/yellka/service.py
src/yellka/cli.py
src/yellka/discord_bot.py
tests/test_economy.py

2:07 AM
ретро должно быть сиииильно больше,
там явно десятки поинтов, ты как-то неправильно его считаешь
2:08 AM

Worked for 1m 17s
Да, ретро было сильно занижено. Я считал только новые retro_bonus транзакции бота:

2.75 + 2.95 = 5.7 AP
А историческое ретро из таблицы было отдельно:

M19 = SUM(M5:M18) = 42.065 AP
Добавил это как историческую настройку и уже применил к БД:

python -m yellka --db ./balance.sqlite3 history-settings --historical-retro 42.065
Теперь статистика такая:

Исторический заработок: 259.4 AP
старт 24
задачи 95.335
ретро 47.765 (историческое 42.065)
скидка 20 / чистыми 17
премии/прочее 99.3
Общий заработок не меняется, просто расклад стал правильным: ретро выросло, “премии/прочее” уменьшилось.

Проверка прошла: 24 tests OK.

4 files changed
+25
-5
Undo

Review

src/yellka/service.py
src/yellka/cli.py
src/yellka/discord_bot.py
tests/test_economy.py

2:09 AM
ты можешь считать ретро, по разнице между сумме всех rewar и всех retro_paid
2:10 AM

Да, это лучше: не хранить историческое ретро отдельной ручной цифрой, а считать его из задач как разницу между “текущая цена после ретро” и “исходная награда”. Я проверю, что в задачах сейчас лежит reward/current_reward, и переключу статистику ретро на этот расчет.

Explored 1 search, ran 1 command
Сейчас sum(current_reward - reward) по задачам дает только 5.7, потому что импортированные исторические задачи были занесены уже как “финальные”, без старой цены до ретро. Чтобы получить десятки, надо восстановить reward как исходную цену до ретро, а current_reward оставить финальной. Сначала переключу статистику на разницу задач, потом поднимем данные из таблицы для исторического импорта.

Edited 3 files
Логика статистики переключена на sum(current_reward) - sum(reward). Теперь исправлю тесты и затем обновлю текущие исторические задачи, чтобы их reward стало исходной ценой до ретро по таблице.

Edited 1 file, ran 2 commands
Да, уже переключил формулу на sum(current_reward) - sum(reward). Но текущие данные задач еще не отражают старое большое ретро: у импортированных задач current_reward почти равен reward, поэтому разница дает только новые 5.7. Сейчас восстановлю current_reward по таблице: для старых групп оно должно включать дельту из столбца L, чтобы сумма ретро получалась из самих задач.

Ran 1 command
4 files changed
+17
-24
Undo

Review

src/yellka/service.py
retro_earned: Decimal
historical_retro_bonus: Decimal
discount_gross: Decimal
task_earned = self._sum_transactions(conn, "task_reward")
historical_retro_bonus = self._get_decimal(conn, "historical_retro_bonus")
retro_earned = parse_ap(
self._sum_transactions(conn, "retro_bonus") + historical_retro_bonus
)
retro_earned = self._task_retro_earned(conn)
total_earned = parse_ap(
retro_earned=retro_earned,
historical_retro_bonus=historical_retro_bonus,
discount_gross=discount_gross,
historical_starting_balance: Decimal | int | str | None = None,
historical_retro_bonus: Decimal | int | str | None = None,
) -> None:
)
if historical_retro_bonus is not None:
self._set_meta(
conn,
"historical_retro_bonus",
db_ap(historical_retro_bonus),
)

        "historical_starting_balance": db_ap(DEFAULT_HISTORICAL_STARTING_BALANCE),
        "historical_retro_bonus": db_ap(DEFAULT_HISTORICAL_RETRO_BONUS),
    }

def _task_retro_earned(self, conn: sqlite3.Connection) -> Decimal:
    rows = conn.execute("SELECT reward, current_reward FROM tasks").fetchall()
    total = sum(
        (
            parse_ap(row["current_reward"] or row["reward"])
            - parse_ap(row["reward"])
            for row in rows
        ),
        Decimal("0.000"),
    )
    return parse_ap(total)

def _connect(self) -> sqlite3.Connection:

src/yellka/cli.py
src/yellka/discord_bot.py
tests/test_economy.py

Гемплей Партии Елки (Секретно).xlsx

Вот таблица если она тебе необходима

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions