Skip to content

Тэги

Тэги это вспомогательная штука, которая сама по себе ничего не делает, но могут использоваться в проверках. Например, если вам нужно наложить эффект только на определенный тип оружия или ваша защитная абилка должна очень хорошо защищать от определенного вида атак, то тэги ваш верный друг и товарищ.

Сам по себе тэг это класс, содержащий следующие поля:

Поля класса тэг
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 в зависимости от того, есть такой тэг или нет. Можно передать как тэг, так и строку с айдишником.