Персонаж игрока
Специфичность информации
Все, написанное на этой страничке, писалось под конкретный ролевой проект и может быть не актуально/не востребованно на других. Тут не будет прям огромных спойлеров, но может быть в меру чувствительная информация, поэтому вьювер дискрешен ис адвайсд.
PlayerEntity
Он наследует обычный класс Entity, и имеет набор полей и методов для ролевого проекта Stargazer. Это всякие приколы, которые касаются только игроков, а не всех энтити - поэтому и были вынесены отдельно, чтобы не забивать "рядовых мобов" ненужной для них инфой.
Большинство таких сущностей это просто строки с данными, которые по разному используются уже самими игроками и гейм-мастерами в процессе игры.
Чтобы не нагружать документацию ненужной инфой, у некоторых полей класса не будет описания, можете догадаться об их значении самостоятельно. Те, что нуждаются в пояснении, будут пояснены ниже.
Поля класса PlayerEntity
oath: str- Обет, который дает персонаж.
small_milestone: int- Кол-во малых вех.
huge_milestone: bool- Наличие большой вехи.
clues: list[Clues]- Список клюесов. Подробности ниже.
perms: list[str]- Список пермишинов, используемых интеграцией.
knowledge: Knowledge- Знания персонажа. Подробности ниже.
unrecognized_name: str- Имя для тех, кто еще не знаком с вашим персонажем.
appearance: str- Описание общей внешности персонажа.
current_appearance: str- Описание текущей внешности персонажа.
current_mood: str- Отражает текущее настроение персонажа.
narrative_perks: dict- Словарь с нарративными перками, где ключ - название, а значение - описание.
voice: str- Обозначение голоса персонажа, используется при общении по рации.
character: str- Характер персонажа.
thoughts: list[str]- Список из строк, содержащих мысли персонажа. Псионики могут их считывать, но заполняются добровольно.
infosphere_opinion: str- Оценка персонажа инфосферой.
gossips_to_give: int- То, сколько игрок может выдать госсипов.
gossips: list[Gossip]- Госсипы персонажа. Подробнее ниже.
techs: list[Tech]- Список известных технологий. Подробнее ниже.
master: PlayerEntity- Наставник персонажа. Если у персонажа есть наставник, то его опыт от бросков (подробнее об этом в роллах немного увеличивается, в зависимости от разницы между атрибутом/навыком ученика и наставника.
students: list[PlayerEntity]- Если есть наставник, есть и ученики. Учеников не может быть больше трех. Так же если есть ученики, то энтити не может иметь наставника.
relatives: list[PlayerEntity]- "Родственные души" персонажа. В данный момент не используется.
max_experience: float- Еженедельный максимум, сколько опыта может накопить персонаж от роллов.
curr_experience: float- Текущее накопленное значение опыта.
Знания (Knowledge)
Это класс-контейнер, который состоит из полей. В данный момент они почти идентичны навыкам-арсам, скорее всего в будущем их список будет расширен.
Поля класса Knowledge
- ELECTRODYNAMICS
- VITAISM
- PSINERGICS
- SEFIROMANTICS
- THEURGY
- CATALYSTICS
- COMBISTICS
- DEIPHYSICS
- PHOTOKINETICS
- BIOGENETIC
- CYBERSYNTHETICS
- PLANOLOGY
- ANICENT
Все эти поля являются float и по умолчанию равны нулю. Есть два метода взаимодействия с ними:
Методы класса Knowledge
mod(knowledge: str, mod: str)- Можно задать новое значение знания. В mod передается модификатор.
get(knowledge: str)- Получить значение знания.
Знание не может быть выше 1, это считается 100% знанием о предмете. Так, например, если знание 0.65, то это значит, что персонаж его знает на 65%. Так же знание нельзя делать отрицательным, это не имеет никакого смысла.
Зацепки (Clues)
Зацепки - это знание персонажа о чем-либо, обычно - о квесте. При желании, через них можно сделать много чего другого, они могут использоваться в любой ситуации, где нужно зафиксировать знание персонажа о чем-то конкретном.
Все зацепки создаются заранее в папке /content/rp/clues.py. У класса зацепок всего три поля, и все они стринги: uid, name, description. Я не буду расписывать, что они значат, вы и так догадаетесь.
Как следствие, создание Clues будет выглядеть как-то так.
from containers.player import Clue
Clue(uid="dragon_quest_1", name="Информация о драконах в пещере", description="""Вы нашли агитационную
бумажку, свидетельствующую о том, что некто собирал группу охотников за драконьей чешуей в пещеру
Дествейл. Судя по всему, он был действительно богат, потому что обещал внушительную сумму денег.""").save()
У игрока есть add_clue(self, new_clue: Clue) и remove_clue(self, new_clue: Clue) для манипуляции с ними.
Слухи (Gossips)
По задумке их механики, одна энтити выдает госсип другой, но это возможно только если у энтити достаточно gossips_to_give. Госсип является отдельным классом, он тоже очень простой:
Поля класса Gossip
gossip: str- Описание слуха. Например "Выбрасывает кошек из окна" или "Жертвует сиротским приютам миллионы денег".
gossip_type: GossipType- Энам, варианты ниже.
Энам GossipType
- autocrat
- champion
- collector
- mage
- caregiver
- architect
- gallant
Выдача происходит через API. Не подразумевается, что вы должны выдавать их в абилках, но их можно использовать, например скейлить урон или чет такое.
Технологии (Tech)
Тут подробности смотрите на их собственной страничке в крафтах.