Начнем с очень простого квеста под названием "Реликвия".
Сначала откройте module_troops и добавьте это в любую строку:
["antler","Antler","Antler",tf_hero, scn_town_4_tavern|entry(3),reserved, fac_commoners,[itm_nomad_armor,itm_nomad_boots],def_attrib|level(2),wp(20),knows_common,0x00000000000430c701ea98836781647f],
Давайте проанализируем:
"antler" - это ID НПС, он должен быть уникальным
Antler - это имя НПС
Antler - Имя, когда их много. Не используется для НПС в сингле. (прим. переводчика. Эта строчка должна быт в коде НПС, но в игре вы того, что написали не увидите)
tf_hero - Без этого група не НПС. Обязательно для героев.
scn_town_4_tavern - Место где герой появится. Если хотите изменить, то найдите module_parties город и в module_scenes сцену. Идентификатор сцены скопируйте и вставьте сюда (не забывайте о "scn_")
entry(3) - Точка входа, место где появится герой. Добавлять с помощью ВРС.
reserved - ничего интересного.
fac_commoners - Фракция группы. Если хотите изменить, найдите фракцию в module_factions
[itm_nomad_armor,itm_nomad_boots] - Инвентарь. Можете добавить свое, просто помните, что вооружение вам нужно найти в items.py, не забывайте "itm_" перед идентификатором.
def_attrib - атрибуты группы
level(2) - уровень НПС.
wp(20) - количество умений НеПиСя.
knows_common - навыки героя. Можете, к прмеру добавить "knows_riding_2|knows_power_strike_4" и т.д..
0x00000000000430c701ea98836781647f - Код лица.
Так же добавим другие войска
["thyr","Thyr","Thyr",tf_hero|tf_unkillable, no_scene,0, fac_order_of_night,[itm_great_axe,itm_black_armor,itm_winged_great_helmet,itm_nomad_boots,itm_charger],knight_attrib_1|level(30),wp(140),knows_common|knows_riding_6|knows_athletics_3|knows_ironflesh_2|knows_shield_2,man_face_younger_1, man_face_older_2],
Фракция тут изменилась на Орден Ночи. И дальше:
["guardian","Guardian","Guardian",tf_guarantee_armor|tf_guarantee_boots|tf_guarantee_horse|tf_guarantee_helmet,0,0,fac_order_of_night,
[itm_great_axe,itm_black_armor,itm_mail_coif,itm_nomad_boots,itm_charger],
knight_attrib_1|level(30),wp(140),knows_common|knows_riding_6|knows_athletics_3|knows_ironflesh_2|knows_shield_2,man_face_younger_1, man_face_older_2],
"tf_guarantee_armor" - войска всегда будут носить доспехи.
"tf_guarantee_horse" - войска всегда будут ходить с конями.
Теперь идите к module_factions и вставьте это:
("order_of_night","Order of Night", 0, 0.5,[("player_faction",-1.0)], []),
И как всегда, анализируем!
order_of_night - Идентификатор фракции
Order of Night - Имя фракции.
0.5 - Отношение между собой.
"player_faction",-1.0 - Отношение к игроку. Тут они его ненавидят
Перейдём к самой большой части туториала - module_dialogs. Под ramun_the_slave_trader вставьте этот код:
[trp_antler, "start", [[eq,"$holy_relic",2]], "Greetings {playername}.","bye2",[]],
[trp_antler|plyr, "bye2", [], "Greetings to you too, Antler.","close_window",[]],
[trp_antler, "start", [[eq,"$holy_relic",1]], "Did you find the relic?","relic_find_question",[]],
[trp_antler|plyr, "relic_find_question", [(player_has_item,"itm_relic")], "Yes! It was quite difficult.", "relic_znaleziona",[(call_script,"script_end_quest","qst_relic")]],
[trp_antler|plyr, "relic_find_question", [], "No, not yet.", "close_window",[]],
[trp_antler, "relic_znaleziona", [], "Really? Well, congratulations {young man/lassie}! I decided to don't give you reward. This book is a reward. You can sell it in shops.","close_window",[[assign,"$holy_relic",2]]],
[trp_antler, "start", [[eq,"$holy_relic",0]], "Hello, {young man/lassie}! Are you looking for a job or something?", "god1",[]],
[trp_antler|plyr, "god1", [], "Yes!", "god2",[]],
[trp_antler, "god2", [], "Good. Do you heard anything about Order of Night? They're band of wandering bastards or fallen knights, led by Thyr. They recently raided Veluca monastery and stolen holy relic. Now, they should be resting near village of Veidar. Find them, kill everyone except Thyr. Then, persuade him to give you information about location of relic. I hope it's quite clearly. I'll pay you 2000 denars.", "god3",[]],
[trp_antler|plyr, "god3", [], "Allright, that's nice offer. I'll regain relic!", "godyes",[
(setup_quest_text, "qst_relic"),
(str_store_string, s2, "@A guy called Antler told me interesting story. Fallen Knights called Order of Night, recently raided Veluca monastery and stolen holy relic. I must find them and after battle, persuade their leader Thyr to give me holy relic. Those bastards, now should be near Veidar!"),
(call_script,"script_start_quest","qst_relic","trp_antler"), (set_spawn_radius,1),(spawn_around_party,"p_village_48","pt_order_of_night")]],
[trp_antler|plyr, "god3", [], "No, I don't have time for that!", "close_window",[]],
[trp_antler, "godyes", [], "Excellent!", "close_window",[[assign,"$holy_relic",1]]],
[party_tpl|pt_order_of_night,"start", [(eq,"$talk_context",tc_party_encounter)], "Hey, you there! What are you looking for?", "order2",[]],
[party_tpl|pt_order_of_night|plyr,"order2", [], "For a holy relic! Give me it, or I'll cut your throats!", "order3",[]],
[party_tpl|pt_order_of_night,"order3", [], "Hahaha! First give me four billion denars!", "order4",[]],
[party_tpl|pt_order_of_night|plyr,"order4", [], "Nice joke. Prepare to fight, cowards!", "close_window",[[encounter_attack]]],
[party_tpl|pt_order_of_night,"order2", [], "Nevermind...", "close_window",[(assign, "$g_leave_encounter",1)]],
[party_tpl|pt_order_of_night,"start", [(eq,"$talk_context",tc_hero_defeated)], "I yield! Please, don't kill me! I'll give you relic!","relikwia",[]],
[party_tpl|pt_order_of_night|plyr,"relikwia", [], "So, be it. Give me relic and I'll let you go.", "relikwia2",[]],
[party_tpl|pt_order_of_night,"relikwia2", [], "Here you are. But, please! Don't kill me!", "relikwia3",[(troop_add_item, "trp_player","itm_relic",)]],
[party_tpl|pt_order_of_night|plyr,"relikwia3", [], "That's not my bussines! Go on, you see the hills, over there? Run, run, or I'll change my mind!", "close_window",[(assign, "$g_leave_encounter",1)]],
Автор не объясняет значение этих строк, но тот кто читал мануал, а именно мануал о диалогах, поймут.
Теперь создадим новый предмет - "relic". Откройте module_items.py и добавьте:
["relic","St. Grunwalder", [("book_e",0)], itp_type_book, 0, 10000,weight(2)|abundance(100),imodbits_none],
Вы можете поставить любой предмет, но книжка лучше всего:
relic - Идентификатор.
St. Grunwalder - Имя предмета.
book_e - Мэш предмета.
itp_type_book - Тип предмета
10000 - Цена предмета
weight(2) - Вес предмета
abundance(100) - Насколько часто предмет будет повлятся в луте или в продавцов.
imodbits_none - Пункт imodbits (например, сломанный, тяжелый и т.п.), не используется для книг.
И конец туториала. Вставьте это в module_quests:
("relic", "Find holy relic", qf_random_quest,
"A guy called Antler told me interesting story. Fallen Knights called Order of Night, recently raided Veluca monastery and stolen holy relic. I must find them and after battle, persuade their leader Thyr to give me holy relic. Those bastards, now should be near Veidar!"
),
Сделайте "Build module", запустите игру и наслаждайтесь квестом:
1. Идите в таверну Суно
2. Возьмите квест в Antler.
3. Соберите армию.
4. Патрулируйте местность вокруг Veidar.
5. Сражайтесь с Орденом.
6. Заберите реликвию в Thyr.
7. Идите назад до Antler.
(прим. переводчика. Автор поленился написать, как сделать сам отряд.)
Для этого откройте module_party_templates и после
("sea_raiders","Sea Raiders",icon_axeman|carries_goods(2),0,fac_outlaws,bandit_personality,[(trp_sea_raider,5,50)]),
вставьте
("order_of_night","Order of night",icon_axeman|carries_goods(2),0,fac_order_of_night,bandit_personality,[(trp_thyr,1,1),(trp_guardian,15,50)]),