Перейти к содержанию

Бой с неписем. Альтернативный финал


Рекомендуемые сообщения

В Морровинде довольно часто приходится сталкиваться в турнирных поединках с неписями. Исход таких боев однообразен: как только здоровье у непися достигает определенной отметки, он начинает просить о пощаде.

Однако привычную ситуацию можно разнообразить, причем это довольно просто. Я расскажу, как помимо привычного создать альтернативный вариант, когда в бою не только израненный оппонент просит пощады, но и в случае серьезного ранения игрока непись начинает глумиться над ним и требовать, чтобы он просил прощения.

 

1. Итак, создайте врага с запасом здоровья больше 50 и поместите его в игре. У меня это нордлинг-задира по имени aa_mantas. Товарищ не очень сообразительный, но не лишенный своеобразного очарования. Назван в честь надоедливых монстров из Fallout, ведет себя соответствующе

 

2. Создайте новую журнальную запись "aaa_zadira" и запишите для нее примерно такие фразы со следующими индексами:

 

Вначале ячейка диалога с флажком Questname «Задира»

20 – я был атакован незнакомым нордлингом

89 – я проиграл этот бой

30 – отношения выяснены – я побил задиру

95 – я убил обидчика

90 – обидчик не стал меня убивать

В этим трех последних записях поставьте галочку Finished.

 

3. Используйте на обидчике следующий скрипт:

 

begin neuvazhay-koryto

; автор - LofZ

short once

 

if ( Menumode == 1 )

return

endif

 

if ( GetJournalIndex "aaa_zadira" >= 30 )

return

endif

 

if ( GetHealth <= 0 )

journal "aaa_zadira" 95

endif

 

if ( once == 0 )

if ( GetDistance, Player <= 350 )

forcegreeting

set once to 1

endif

endif

 

if ( once == 1 )

if ( GetHealth, "aa_mantas" < 50 )

say, "vo\n\m\Hit_NM005.mp3", "стон" ; голос нордлинга

stopcombat

forcegreeting

SetFight 30

set once to 2

endif

endif

 

if ( once == 1 )

if ( Player -> GetFatigue <= 0 )

if ( Player -> getHealth <= 20 )

say, "vo\n\m\Fle_NM004.mp3", "Конец драки, я ухожу" ; а что ему еще остается сказать?

journal "aaa_zadira" 89

stopcombat

SetFight 30

forcegreeting

set once to 2

endif

endif

endif

 

end

 

 

Обратите внимание на строчки: if ( Player -> GetFatigue <= 0 )

if ( Player -> getHealth <= 20 )

Во-первых, вы можете регулировать цифры, задавая сколько пунктов должна быть усталость и здоровье игрока (20 – это, конечно, очень мало. Игрок почти при смерти. Если противник слишком силен, он может все-таки прибить Нери и диалог не состоится).

Во-вторых, в самый главных, - уже прокачанного игрока сложно повалить на землю, условие if ( Player -> GetFatigue <= 0 ) для него может не сработать никогда. Если ваш квест рассчитан на опытного игрока, поставьте для «усталости» другое значение или вовсе уберите это условие.

 

3. Напишите для агрессора гритинг с условием journal “aaa_zadira” < 20 примерно следующего содержания:

«Сейчас я устрою тебе драку, %PCRace! Я не стану убивать тебя, но окуну пару раз в лужи на улице и посмотрю, какого цвета у тебя кровь!»

В результате пишем:

journal "aaa_zadira" 20

startcombat, player

goodbye

 

4. Создаем следующий гритинг повыше с условием journal “aaa_zadira” == 20: описываем ситуацию, когда наш громила проигрывает:

«Остановись! Я признаю свое поражение. Вот тебе даже пара монет. Купи себе выпивку и не злись»

В результате: player -> additem "gold_001" 50

journal "aaa_zadira" 30

stopcombat

goodbye

5. Создаем еще выше гритинг с условием journal “aaa_zadira” == 89. Описываем самый интересный момент – проигрыш игрока: «Достаточно, %PCRAce? Я победил тебя, все честно! Иди теперь зализывай раны и помни, что я мог даже убить тебя, но не сделал этого! Не каждый из противников, которых ты найдешь в этом мире, способен на такое!»

В результате: journal "aaa_zadira" 90

goodbye

6. Реакция программы, если непись, несмотря ни на что, был убит в этой драке происходит автоматически – возникает журнальная запись с индексом 95.

 

Готово. При желании создайте для задиры диалог с новыми темами.

Сохраняйте плагин и наслаждайтесь игрой.

Ссылка на комментарий
Поделиться на другие сайты

  • 9 месяцев спустя...
В результате пишем:

journal "aaa_zadira" 20

startcombat, player

goodbye

насколько я знаю тут нужно приписать сет файт 100 ;)..

Изменено пользователем Реван
Ссылка на комментарий
Поделиться на другие сайты

насколько я знаю тут нужно приписать сет файт 100 ;)..

Параметр SetFight отвечает за уровень агрессивности. Чем он выше, тем вероятность, что непись/кричер атакует игрока. Значение 90 и 100 по сути означает, что встреча с Нери закончится боем. Но это только один из способов управления поведением ИИ.

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

Ссылка на комментарий
Поделиться на другие сайты

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...