Тэги
Тэги это вспомогательная штука, которая сама по себе ничего не делает, но могут использоваться в проверках. Например, если вам нужно наложить эффект только на определенный тип оружия или ваша защитная абилка должна очень хорошо защищать от определенного вида атак, то тэги ваш верный друг и товарищ.
Сам по себе тэг это класс, содержащий следующие поля:
Поля класса тэг
id: str- Строка. Невозможно создать/инициализировать два тэга с одинаковым uid.
type: TagType- Тип тэга. Это указатель на то, тэгом чего является конкретный тэг, тэгом части тела или тэгом энтити. Имеет мало применений и нужно лишь для уменьшения путаницы.
display_name: str- Отображаемое имя.
description: str- Описание тэга.
amplifier: int- Амплифаер, это "сила" тэга. Используется уже внутри самих методов абилок, само по сбее ничего не делает.
variables: dict- Словарь, где вы можете записать какие-то переменные у тэга. В этом смысле тэги могут использоваться, как хранилище динамической дополнительной информации про энтити или часть тела. Но само по себе это применений не имеет.
Холдер тэгов (TagHolder)
Такой же, как и StatusHolder, абстрактный класс, наследуемый энтити, статусами, абилками, итемами и бодипартами. Имеет два поля - tags и tags_type, оба создаются и заполняются автоматически, вручную в них лучше не лезть.
Поля класса TagContainer
- tags: list[Tags]
- Список тэгов.
- tags_type: TagType
- Тип тэгов. По умолчанию None, оверрайдится в конкретных классах, наследующих TagHolder.
Для взаимодействия с тэгами есть следующие методы:
Методы класса TagContainer
add_tag(tag: str | Tag, amplifier: int = None)- Добавляет тэг, можно сразу добавить его с амплифаером. Если передается строка, то нужно строчное название тэга.
remove_tag(tag: str | Tag)- Убирает тэг, тоже можно передать как айдишник, так и Tag.
mod_tag_amplifier(f_tag: Tag, amplifier: int)- Позволяет изменить амплифаер тэгов в в массиве.
has_tag(tag)- возвращает True или False в зависимости от того, есть такой тэг или нет. Можно передать как тэг, так и строку с айдишником.