Skip to content

Fenia skills

Ruffina Koza edited this page Sep 17, 2019 · 2 revisions

Работа с умениями

Временные умения

С помощью Фени можно дать персонажу какое-то временное умение, ранее не доступное для его профессии, как будто оно ему приснилось.

Если это умение уже было доступно (как профессиональное или уже приснилось), метод ничего не сделает и вернет false.

Пример присваивания временного умения в триггере onEquip:

if (.Skill("dodge").giveTemporary(ch, 75)) {
    // Успешно повесилось разученным на 75, пока не снимет вещь.
    ch.act("Ты чувствуешь себя ловким и проворным, как лиса.");
}

Или так:

.Skill("dodge").giveTemporary(ch, 100, 3); // повесить разученным на 100, на 3 мировых дня.

Снять такое умение можно в триггере onRemove. Никаких проверок не нужно, лишнего не снимет.

.Skill("dodge").removeTemporary(ch);

Cправка по всем методам скилла можно вывести так:

eval ptc(.Skill("none").api())

Аффекты, влияющие на знания

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

Пример аффекта, влияющего на знания нескольких умений:

var af;

af = .Affect();
af.type = "clumsiness";                       // (заменить на реально существующее умение)
af.location = .tables.apply_flags.learned;    // на что оказываем влияние (разученность)
af.modifier = -50;                            // нету у тебя больше парирования
af.where = .tables.affwhere_flags.skills;     // что именно меняем - умения или группу умений
af.global = "dodge parry 'enhanced damage'";  // действует на несколько умений сразу
af.duration = 10;                             // на 10 минут (тиков)
af.level = ch.level;
ch.affectAdd(af);

Пример аффекта, влияющего на знание группы умений:

af.where = .tables.affwhere_flags.skill_groups;
af.modifier = 100;
af.global = "benedictions"; // благословляй не хочу

Аффекты, влияющие на уровень заклинаний

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

Пример аффекта, влияющего на уровень всех заклинаний:

var af;

af = .Affect();
af.type = "abracadabra"; 
af.location = .tables.apply_flags.level       // на что оказываем влияние (уровень)
af.modifier = 3;                              // увеличивать уровень на 3
af.duration = 10;                             // на 10 минут (тиков)
af.level = ch.level;
ch.addAffect(af);

Пример аффекта, влияющего на уровень лечебных заклинаний:

var af;

af = .Affect();
af.type = "abracadabra"; 
af.location = .tables.apply_flags.level       // на что оказываем влияние (уровень)
af.modifier = 1;                              // увеличивать уровень на 1
af.where = .tables.affwhere_flags.skill_groups;
af.global = "healing";
af.duration = 10;     
af.level = ch.level;
ch.addAffect(af);

См. также

You can’t perform that action at this time.