Skip to content

Персонаж игрока

Специфичность информации

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

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)

Тут подробности смотрите на их собственной страничке в крафтах.