KAZIK/tools/generators/generate_hell_tower_data.py
Игорь Федосеев 2024aacd31 feat(tower): implement 3D Hell Tower mode and clean legacy console code
- Add 3D Hell Tower mode with 10 boss floors, briefings, and outcome tracking across games
- Refactor poker.asm by removing >10,600 lines of dead legacy console games and menus
- Rebuild poker.exe with clean binary output and update .gitignore
2026-10-15 19:49:50 +03:00

116 lines
4.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

def make_db(s):
b = s.encode('cp1251')
return ','.join(str(x) for x in b) + ',0'
bosses = [
'БЕС АЗАРТА',
'ДЕМОН КОСТЕЙ',
'ЧЕРНОКНИЖНИК',
'КРУПЬЕ ПРЕИСПОДНЕЙ',
'ДЕМОН БЛЕФА',
'ОБРЕЧЕННЫЙ ГРЕШНИК',
'КОЛЕСО СУДЬБЫ',
'КАРТОЧНЫЙ ЧЕРТ',
'ПАЛАЧ КРЮКА',
'ВЛАДЫКА БАШНИ'
]
games = [
'Орел и решка',
'Кости',
'Черепа и шарик',
'21 / Очко',
'Покер',
'Русская рулетка',
'Казино-рулетка',
'Дурак',
'Крюк: Skill Check',
'Buckshot Roulette'
]
descs = [
'Угадай сторону монеты.',
'Перебрось демона в сумме костей.',
'Найди душу под черепом.',
'Собери 21 очко и победи крупье.',
'Вскрой карты и победи в покер.',
'1 патрон в барабане: выживи.',
'Сделай ставку на рулетке.',
'Оставь чёрта в дураках.',
'Попади в зону и сорвись с крюка.',
'Дуэль на дробовиках за жизнь!'
]
lines = []
lines.append('; --- hell_tower_data.inc: Data for Hell Tower 3D ---')
lines.append('MODE_HELL_TOWER equ 22')
lines.append('TOWER_STATE_BRIEFING equ 0')
lines.append('TOWER_STATE_IN_GAME equ 1')
lines.append('TOWER_STATE_CLEAR equ 2')
lines.append('TOWER_STATE_DEFEAT equ 3')
lines.append('TOWER_STATE_CHAMPION equ 4')
lines.append('')
lines.append('InitHellTower3D PROTO')
lines.append('TowerExitToHall PROTO')
lines.append('TowerReportRoundOutcome PROTO :DWORD')
lines.append('RenderTowerInGameBadge PROTO')
lines.append('')
lines.append('.data')
lines.append('towerStage dd 1')
lines.append('towerFloorState dd 0')
lines.append('towerAnimClock dd 0')
lines.append('towerCurrentGame dd 0')
lines.append('towerPrizeAmount dd 66600')
lines.append('towerHudText db 91,32,0')
lines.append('')
lines.append('towerFloorModes dd MODE_COIN, MODE_DICE, MODE_SKULLS, MODE_BLACKJACK, MODE_POKER, MODE_RUSSIAN, MODE_ROULETTE, MODE_DURAK, MODE_SKILL, MODE_BUCKSHOT')
lines.append('')
for i, b in enumerate(bosses):
lines.append(f'towerBoss{i+1} db {make_db(b)}')
lines.append('')
lines.append('towerBossNames dd ' + ', '.join(f'OFFSET towerBoss{i+1}' for i in range(10)))
lines.append('')
for i, g in enumerate(games):
lines.append(f'towerGame{i+1} db {make_db(g)}')
lines.append('')
lines.append('towerGameNames dd ' + ', '.join(f'OFFSET towerGame{i+1}' for i in range(10)))
lines.append('')
for i, d in enumerate(descs):
lines.append(f'towerDesc{i+1} db {make_db(d)}')
lines.append('')
lines.append('towerDescriptions dd ' + ', '.join(f'OFFSET towerDesc{i+1}' for i in range(10)))
lines.append('')
ui_texts = {
'towerHeader': 'КАЗИНО 3D - АДСКАЯ БАШНЯ',
'towerFloorPrefix': 'ЭТАЖ ',
'towerOfTen': ' / 10',
'towerEnemyLabel': 'ВРАГ: ',
'towerGameLabel': 'ИГРА: ',
'towerRuleText': '10 битв подряд без права на ошибку',
'towerLossWarning': 'Поражение - возврат в холл казино',
'towerStartBtn': '[ПРОБЕЛ] В БОЙ',
'towerEscBtn': '[ESC] СБЕЖАТЬ',
'towerClearTitle': 'ЭТАЖ ЗАЧИЩЕН! ВРАГ ПОВЕРЖЕН!',
'towerClearDesc': 'Враг повержен! Впереди новый этаж.',
'towerNextBtn': '[ПРОБЕЛ] ДАЛЬШЕ',
'towerDefeatTitle': 'ВЫ ПАЛИ В АДСКОЙ БАШНЕ...',
'towerDefeatDesc': 'Ваша душа навеки сгорела в Аду.',
'towerReturnBtn': '[ПРОБЕЛ / ESC] В ХОЛЛ КАЗИНО',
'towerChampTitle': 'ТРИУМФ! АДСКАЯ БАШНЯ ПОКОРЕНА!',
'towerChampSubtitle': 'ВЫ - ЧЕМПИОН АДСКОЙ БАШНИ!',
'towerPrizeText': 'СУПЕРПРИЗ: +$66,600 В БАНКРОЛЛ!',
'towerHudBadge': 'БАШНЯ: ',
'towerHudOfTen': '/10',
}
for k, v in ui_texts.items():
lines.append(f'{k} db {make_db(v)}')
with open('src_graphics/hell_tower_data.inc', 'wb') as f:
f.write(('\n'.join(lines) + '\n').encode('ascii'))
print('hell_tower_data.inc regenerated with compact strings.')