Skip to content

AsdolgTheMaker/LARP_Medicine_05012019

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Система медицины

Целевой проект: Сектор Тапани 05.01.2019

Работа велась в Visual Studio Community 2017 с использованием C# Windows Forms. Поэтому, чтобы начать работу над скачанным клоном репозитория, нужна установленная студия. После этого достаточно просто запустить файл решения (.sln).

Введение

Должен предупредить, что данная система делалась в крайне сжатые сроки, и в следствие своей неопытности, в некоторых местах я применил далеко не лучшие решения (например, в окне выбора действия определение нужного объекта класса Action происходит в зависимости от текста на кнопке).

Если вы хотите адаптировать код под свои нужды, то, скорее всего, понадобится довольно жёсткая переработка.

С другой стороны, код очень детально прокомментирован, так что разобраться будет проще.

Описание процесса

Система предпологалась использоваться следующим образом:

  1. Персонаж получает ранение

  2. Персонаж любым способом оказывается в медблоке

  3. Игрок сообщает:

3.1) Сколько хитов каким ранением было снесено

3.2) Свой медицинский ID, указанный в загрузе

  1. Медик вбивает эту информацию в программу

  2. Начинается операция, после которой персонаж считается полностью вылеченным (ну или умирает).

Заполнение базы данных

Принцип работы

Чтобы программа исправно работала, необходимо рядом с ней поместить файл 'database.txt', содержащий данные о персонажах. В корне репозитория присутствует заполненный файл с ролевой игры Сектор Тапани: Голубая Кровь (2019г), здесь же я поясню структуру данных.

Файл заполняется построчно. То есть, каждая строка файла обрабатывается независимо от остальных строк.

Строка-комментарий

В файле можно оставить какой-нибудь комментарий, поставив в самом начале строки знак '#' - в этом случае программа полностью проигнорирует строку. Например:

# База данных ролевой игры *вставить название*.

Эта строка не принесёт вреда файлу, и программа её проигнорирует.

Данные о персонаже

Чтобы внести данные о персонаже в базу, необходимо составить строку одного из следующих форматов:

ID_персонажа#Титул#Имя#

ID_персонажа#Титул#Имя#Фамилия

ID_персонажа#Титул#Имя#Фамилия#Состояние

ID_персонажа.

ID персонажа - его личный номер, который игрок должен знать. Он всегда состоит из четырёх (!!!) цифр, МОЖЕТ начинаться с нуля (можно использовать хоть 0000).

Титул.

Игра проводилась про футуристическое титулованное дворянство, и у многих персонажей были титулы. Для персонажей без титула предусмотрен механизм отображения фразы "Нет титула" - для этого необходимо вместо титула ввести АБСОЛЮТО ЛЮБОЙ символ, ОДИН. Например: 1234#%#Иван#Дурачок

Имя и фамилия.

Тут мало что надо пояснять. Фамилия у персонажа может отсутствовать, для этого необходимо просто поставить на её месте пробел. А можно и ничего не ставить - главное, чтобы в строке было минимум три знака '#'.

Состояние.

  • 0 - ЖИВ.
  • 1 - МЁРТВ.
  • 2 - ЗАМОРОЖЕН.

Отсутствие цифры автоматически расценивается как ЖИВой персонаж.

Примеры полностью верно заполненных строк:

7163#Барон#Андре#ле Штерн#0 1738#Лорд#Волан#де Морт#0 3632#%#Пётр#Сапогов#1

Проведение операции.

Нужно понять некоторые различия между терминами 'ранение' и 'повреждение' в рамках этой системы.

Ранение - это ТИП УРОНА, который наносится ВО ВРЕМЯ ИГРЫ, будь то ранение световым мечом, перелом, или же удар молнией. Повреждение - это РЕЗУЛЬТАТ ранения. Каждое ранение каждой степени тяжести имеет свой набор повреждений, который медику необходимо вылечить для успешного завершения операции.

Описание процесса.

Операция, как уже было сказано выше, заключается в залечивании полученных повреждений. Осуществляется оно посредством выполнения медиком различных действий (нажатия на кнопки) в определённом порядке (для каждого повреждения - свой порядок). При этом ошибки (2+) караются различными последствиями после операции. Смерть пациента наступает при множестве ошибок, совершенных при лечении одного повреждения. Но ошибки с лечения другого повреждения также будут влиять на состояние пациента. После определённого количества ошибок, пациент окажется в критическом состоянии, о чём просигналит система, и следующая ошибка убьёт его.

СПОЙЛЕР: Лечение любых повреждений.

  • Ожог: Фосован-соль => Удалить поражённые участки кожи => Лечебный кожный герметик
  • Открытая рана: Фосован-соль => Зашить рану
  • Перелом: Лечебный кожный герметик => Вправить кость => Нанести фиксирующую повязку
  • Повреждение сосуда: Фосован-соль => Выполнить надрез => Рилл => Соединить сосуд => Зашить рану
  • Повреждение нерва: Фосован-соль => Выполнить надрез => Стимулятор => Соединить нерв => Зашить рану

Неочевидные аспекты.

Криостазис.

Персонажа можно ввести в криостазис. Для этого необходимо начать операцию, а затем отменить её. Программа предупредит пользователя о том, что при отмене операции дроид автоматически заморозит пациента. Разморозку можно провести в любой момент, вновь открыв окно информации о пациенте, и нажав кнопку "Разморозить".

Характеристики.

Стандартные характеристики пациентов (давление, пульс, кровь) на самом деле генерируются сразу после чтения программой базы данных, основываясь на небольшом факторе рандома. Если закрыть программу и открыть заново - стандартные характеристики пациентов изменятся, так как они не были сохранены в базу.

Заметки врача.

В окне просмотра информации о пациенте можно писать какие-нибудь заметки. Однако, они не сохранятся при перезапуске программы.

Бэкапы базы данных.

Каждый раз, когда закрывается окно просмотра информации о пациенте, программа копирует данные текущей базы данных в файл формата database_часы_минуты.bak, а затем перезаписывает database.txt в соответствии с новыми данными.

Контакты:

Автором системы является Игорь "Asdolg" Гринкевич.

Программа сделана на языке C# с помощью компонентов Windows Forms и собрана в Microsoft Visual Studio Community 2017.

About

Medicine system which was used for Tapani Sector: Blue Blood LARP game at 05.01.2019.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages