Working on quest system
This commit is contained in:
1 parent
aaae368a07
commit
e7ae148ead
22 files changed
+357
-103
No files matched your search
@@ -13,6 +13,13 @@
|
||||
"description": "Это мой журнал куда я вношу свои заметки.",
|
||||
"icon": "resources/w/ui/img/inv/ItemJournal001.png",
|
||||
"selectedIcon": "resources/w/ui/img/inv/ItemSelJournal001.png"
|
||||
},
|
||||
{
|
||||
"id": "teacher_room_key",
|
||||
"name": "Ключ от учительской",
|
||||
"description": "Это ключ от учительской, который я получил от Айпери.",
|
||||
"icon": "resources/w/ui/img/inv/ItemKey001.png",
|
||||
"selectedIcon": "resources/w/ui/img/inv/ItemSelKey001.png"
|
||||
},
|
||||
{
|
||||
"id": "knife",
|
||||
|
||||
@@ -184,7 +184,8 @@
|
||||
"portrait": "resources/dialogue/portrait_phone.png",
|
||||
"text": "Так что жду тебя в универе! Не вздумай прогулять!",
|
||||
"next": "end_1",
|
||||
"bubbleSlot": "message11in"
|
||||
"bubbleSlot": "message11in",
|
||||
"questUnlock" : "aiperi_knife"
|
||||
},
|
||||
{
|
||||
"id": "end_1",
|
||||
|
||||
@@ -17,7 +17,41 @@
|
||||
"type": "Line",
|
||||
"speaker": "Айпери",
|
||||
"portrait": "resources/dialogue/portrait_aiperi.png",
|
||||
"text": "Пока ты не заберешь нож из учительской, никуда я тебя не выпущу.",
|
||||
"text": "Вот тебе ключ от учительской. Иди туда и забери нож.",
|
||||
"next": "line_3",
|
||||
"luaCallback" : "dialog_aiperi_give_key"
|
||||
},
|
||||
{
|
||||
"id": "line_3",
|
||||
"type": "Line",
|
||||
"speaker": "Айпери",
|
||||
"portrait": "resources/dialogue/portrait_aiperi.png",
|
||||
"text": "Пока ты не принесешь мне нож из учительской, никуда я тебя не выпущу.",
|
||||
"next": "end_1"
|
||||
},
|
||||
{
|
||||
"id": "end_1",
|
||||
"type": "End"
|
||||
}
|
||||
]
|
||||
},
|
||||
"id": "knife_dialog002",
|
||||
"start": "line_1",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "line_1",
|
||||
"type": "Line",
|
||||
"speaker": "Айпери",
|
||||
"portrait": "resources/dialogue/portrait_aiperi.png",
|
||||
"text": "Ты куда собрался, Бекзат?",
|
||||
"next": "line_2"
|
||||
},
|
||||
{
|
||||
"id": "line_2",
|
||||
"type": "Line",
|
||||
"speaker": "Айпери",
|
||||
"portrait": "resources/dialogue/portrait_aiperi.png",
|
||||
"text": "Пока ты не принесешь мне нож из учительской, никуда я тебя не выпущу.",
|
||||
"next": "end_1"
|
||||
},
|
||||
{
|
||||
@@ -244,6 +278,24 @@
|
||||
"type": "End"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "door_teacher_dialog001",
|
||||
"start": "line_1",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "line_1",
|
||||
"type": "Line",
|
||||
"speaker": "Бекзат",
|
||||
"portrait": "resources/dialogue/portrait_hero_neutral.png",
|
||||
"text": "Это дверь в учительскую, и она закрыта. Мне нужно взять ключи у Айпери.",
|
||||
"next": "end_1"
|
||||
},
|
||||
{
|
||||
"id": "end_1",
|
||||
"type": "End"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "door_unlock_dialog001",
|
||||
@@ -374,6 +426,8 @@
|
||||
"speaker": "Бекзат",
|
||||
"portrait": "resources/dialogue/portrait_hero_neutral.png",
|
||||
"text": "Ладно...",
|
||||
"objectiveComplete" : "study_beginning.study_beginning_task",
|
||||
"questUnlock" : "study_project",
|
||||
"next": "end_1"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -1,51 +1,82 @@
|
||||
{
|
||||
"quests": [
|
||||
{
|
||||
"id": "tutorial_open_journal",
|
||||
"title": "Журнал заданий",
|
||||
"category": "Tutorial",
|
||||
"status": "Completed",
|
||||
"recommendedLevel": 0,
|
||||
"description": "Теперь у героя есть журнал заданий. В нём можно просматривать текущие поручения, цели и подробные записи о событиях, которые уже произошли в мире игры.",
|
||||
"id": "tutorial_take_items",
|
||||
"title": "Телефон и Журнал",
|
||||
"status": "Available",
|
||||
"autoComplete": true,
|
||||
"description": "Когда я куда-то собираюсь идти, я всегда беру с собой свой телефон и свой журнал.",
|
||||
"objectives": [
|
||||
{ "id": "open_journal", "text": "Открыть журнал заданий", "completed": true }
|
||||
{ "id": "take_phone", "text": "Взять телефон", "completed": false },
|
||||
{ "id": "take_journal", "text": "Взять журнал", "completed": false }
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "side_lost_bag",
|
||||
"title": "Потерянная сумка",
|
||||
"category": "Side",
|
||||
"status": "Completed",
|
||||
"recommendedLevel": 1,
|
||||
"description": "Путник потерял сумку недалеко от лесной тропы. Внутри оказались вещи, важные для его дальнейшего пути. Возвращение сумки укрепило доверие местных жителей к герою.",
|
||||
"id": "study_beginning",
|
||||
"title": "Манасоведение",
|
||||
"status": "Available",
|
||||
"autoComplete": true,
|
||||
"description": "Скоро будет модуль по Манасоведению, а я еще ни разу не ходил на лекции. Сегодня у нас лекция по Манасоведению, надо ее посетить и получить у преподавательницы задание на модуль.",
|
||||
"objectives": [
|
||||
{ "id": "find_bag", "text": "Найти сумку у лесной тропы", "completed": true },
|
||||
{ "id": "bring_bag", "text": "Вернуть сумку путнику", "completed": true }
|
||||
{ "id": "study_beginning_lecture", "text": "Посетить лекцию", "completed": false },
|
||||
{ "id": "study_beginning_task", "text": "Получить задание на модуль", "completed": false }
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "failed_missing_courier",
|
||||
"title": "След курьера",
|
||||
"category": "Side",
|
||||
"status": "Failed",
|
||||
"recommendedLevel": 2,
|
||||
"description": "Курьер исчез до того, как герой смог выйти на его след. Местные говорят, что на дороге остались только следы копыт и обрывок ремня. Возможность узнать, кто забрал посылку, была упущена.",
|
||||
"id": "study_project",
|
||||
"title": "Эссе манасчи",
|
||||
"status": "Hidden",
|
||||
"description": "Преподавательница по манасоведению Аида Джаныбекова дала мне задачу - найти в библиотеке книгу про манасчи Жусупа Мамая, и написать по этой книге эссе. Книгу нельзя выносить из библиотеки, но можно воспользоваться стоящим в библиотеке компьютером, чтобы написать эссе.",
|
||||
"objectives": [
|
||||
{ "id": "ask_innkeeper", "text": "Расспросить трактирщика", "completed": true },
|
||||
{ "id": "find_courier", "text": "Найти курьера до наступления ночи", "completed": false }
|
||||
{ "id": "study_project_book", "text": "Найти книгу", "completed": false },
|
||||
{ "id": "study_project_write", "text": "Написать эссе", "completed": false },
|
||||
{ "id": "study_project_give", "text": "Сдать эссе", "completed": false }
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "contract_old_well",
|
||||
"title": "Старый колодец",
|
||||
"category": "Contract",
|
||||
"status": "Active",
|
||||
"recommendedLevel": 2,
|
||||
"description": "На окраине деревни стоит старый колодец. Ночью из него слышны голоса, а утром вокруг находят мокрые следы. Местные боятся подходить к нему, но староста считает, что причина происходящего связана с давним проклятием.",
|
||||
"id": "ghost_lore",
|
||||
"title": "Призрак",
|
||||
"status": "Hidden",
|
||||
"autoComplete": true,
|
||||
"description": "В университете каждую ночь появляется призрак студентки. Она заявляет, что ее зовут Бегимай и что она должна сдать курсовую работу. Я не помню студентки с таким именем, но может быть она с другого курса? Я должен узнать об этом подробнее.",
|
||||
"objectives": [
|
||||
{ "id": "inspect_well", "text": "Осмотреть старый колодец", "completed": false },
|
||||
{ "id": "search_tracks", "text": "Найти следы возле каменной ограды", "completed": false },
|
||||
{ "id": "report_elder", "text": "Вернуться к старосте", "completed": false }
|
||||
{ "id": "ghost_lore_teacher", "text": "Поговорить с Аидой Джаныбековой", "completed": false },
|
||||
{ "id": "ghost_lore_aiperi", "text": "Поговорить с Айпери", "completed": false },
|
||||
{ "id": "ghost_lore_alik", "text": "Поговорить с Аликом", "completed": false, "visible": false }
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "ghost_coursework",
|
||||
"title": "Курсовая Призрака",
|
||||
"status": "Hidden",
|
||||
"autoComplete": true,
|
||||
"description": "История Бегимай еще более загадочная. Во время сдачи курсовой работы в университете происходила генеральная уборка. По случайности, ее курсовая работа оказалась в стопке бумаг на выброс. В результате курсач оказался на помойке, а преподаватель, не обнаружив курсовую работу, поставил ей ноль баллов. По словам Алика, курсовая работа до сих пор лежит в куче мусора во дворе университета.",
|
||||
"objectives": [
|
||||
{ "id": "ghost_coursework_find", "text": "Найти курсовую работу Бегимай", "completed": false },
|
||||
{ "id": "ghost_coursework_mark", "text": "Показать курсовую работу Аиде Джаныбековой", "completed": false }
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "ghost_release",
|
||||
"title": "Освобождение",
|
||||
"status": "Hidden",
|
||||
"autoComplete": true,
|
||||
"description": "Студентка по имени Бегимай действительно училась в университете в прошлом году. Она пыталась сдать курсовую работу, но по стечению обстоятельств она не смогла это сделать, и получила ноль баллов. Эта курсовая сломала все ее планы и надежды, и Бегимай выбросилась из окна. Теперь она вернулась в виде призрака, и чтобы получить освобождение, она должна убедиться что ей выставили оценку за курсовую работу.",
|
||||
"objectives": [
|
||||
{ "id": "ghost_release_reportcard", "text": "Найти зачетку Бегимай", "completed": false },
|
||||
{ "id": "ghost_release_mark", "text": "Поставить оценку за курсовую в зачетку", "completed": false },
|
||||
{ "id": "ghost_release_show", "text": "Показать зачетку с оценкой призраку", "completed": false }
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "aiperi_knife",
|
||||
"title": "Серебряный нож",
|
||||
"status": "Hidden",
|
||||
"description": "Айпери одолжила мне серебряный нож, который мы использовали чтобы нарезать торт преподавателям на день рождения. Нож до сих пор где-то лежит в учительской, и я должен его забрать и вернуть Айпери.",
|
||||
"objectives": [
|
||||
{ "id": "aiperi_knife_keys", "text": "Получить ключи от учительской", "completed": false },
|
||||
{ "id": "aiperi_knife_take", "text": "Забрать нож", "completed": false },
|
||||
{ "id": "aiperi_knife_give", "text": "Отдать нож Айпери", "completed": false }
|
||||
]
|
||||
}
|
||||
]
|
||||
|
||||
@@ -50,6 +50,7 @@ game_api.pickup_item("phone")
|
||||
game_api.deactivate_interactive_object("Phone001")
|
||||
game_api.start_dialogue("dialog_phone_pickup001")
|
||||
phone_picked_up = true
|
||||
game_api.quest_set_objective_completed("tutorial_take_items", "take_phone")
|
||||
end
|
||||
|
||||
function on_journal_pickup()
|
||||
@@ -57,6 +58,7 @@ game_api.pickup_item("journal")
|
||||
game_api.deactivate_interactive_object("Journal001")
|
||||
game_api.start_dialogue("dialog_journal_pickup001")
|
||||
journal_picked_up = true
|
||||
game_api.quest_set_objective_completed("tutorial_take_items", "take_journal")
|
||||
end
|
||||
|
||||
--[[
|
||||
@@ -203,12 +205,12 @@ game_api.set_location_callbacks(
|
||||
game_api.deactivate_interactive_object("Room_Cover_LivingRoom_W_N_2_001")
|
||||
|
||||
--debug
|
||||
game_api.deactivate_interactive_object("Room_Cover_Bath_W_N_2_001")
|
||||
--game_api.deactivate_interactive_object("Room_Cover_Bath_W_N_2_001")
|
||||
|
||||
game_api.deactivate_interactive_object("Room_Cover_LivingRoom_W_S_2_001")
|
||||
game_api.deactivate_interactive_object("Room_Cover_Main_Hall_And_Corridors_002")
|
||||
game_api.deactivate_interactive_object("Room_Cover_Utility_W_N_3_001")
|
||||
game_api.deactivate_interactive_object("Room_Cover_Utility_W_S_3_001")
|
||||
--game_api.deactivate_interactive_object("Room_Cover_LivingRoom_W_S_2_001")
|
||||
--game_api.deactivate_interactive_object("Room_Cover_Main_Hall_And_Corridors_002")
|
||||
--game_api.deactivate_interactive_object("Room_Cover_Utility_W_N_3_001")
|
||||
--game_api.deactivate_interactive_object("Room_Cover_Utility_W_S_3_001")
|
||||
--debug end
|
||||
game_api.rotate_object("Door_Utility_-1_1_2_Leaf_001", 90, 0.01, nil)
|
||||
game_api.rotate_object("Door_Utility_-1_-1_2_Leaf_001", -90, 0.01, nil)
|
||||
|
||||
@@ -6,6 +6,7 @@ lection_is_over = false
|
||||
|
||||
player_hold_book = false
|
||||
player_hold_knife = false
|
||||
player_hold_key = false
|
||||
teacher_arrived = false
|
||||
teacher_told_about_book = false
|
||||
|
||||
@@ -21,12 +22,22 @@ player_ghost_aware = false
|
||||
|
||||
ghost_gone = false
|
||||
|
||||
function dialog_aiperi_give_key()
|
||||
if (player_hold_key == false) then
|
||||
game_api.pickup_item("teacher_room_key")
|
||||
game_api.quest_unlock("aiperi_knife")
|
||||
game_api.quest_set_objective_completed("aiperi_knife", "aiperi_knife_keys")
|
||||
player_hold_key = true
|
||||
end
|
||||
end
|
||||
|
||||
function lection_hall_zone001_enter_callback()
|
||||
--game_api.start_dialogue("")
|
||||
--Start cutscene
|
||||
if (lection_is_over == false) then
|
||||
game_api.player_stop()
|
||||
game_api.start_cutscene("test_cutscene_01")
|
||||
game_api.quest_set_objective_completed("study_beginning", "study_beginning_lecture")
|
||||
end
|
||||
end
|
||||
|
||||
@@ -42,7 +53,11 @@ function knife_dialog_zone001_enter_callback()
|
||||
if (day == 0) then
|
||||
if (player_hold_knife == false) then
|
||||
if lection_is_over then
|
||||
if (player_hold_key) then
|
||||
game_api.start_dialogue("knife_dialog002")
|
||||
else
|
||||
game_api.start_dialogue("knife_dialog001")
|
||||
end
|
||||
game_api.switch_navigation(4)
|
||||
end
|
||||
else
|
||||
@@ -82,6 +97,7 @@ game_api.set_npc_enabled(1, false)
|
||||
player_hold_knife = true
|
||||
game_api.set_trigger_zone_enabled(2, true)
|
||||
game_api.npc_walk_to(0, -4.57412, 0, 6.78495, on_teacher_arrived2)
|
||||
game_api.quest_set_objective_completed("aiperi_knife", "aiperi_knife_take")
|
||||
end
|
||||
|
||||
function on_book_pickup()
|
||||
@@ -136,7 +152,11 @@ function on_npc_interact(npc_index)
|
||||
local day = game_api.getIntValue("day")
|
||||
|
||||
if (day == 0) then
|
||||
if (player_hold_key) then
|
||||
game_api.start_dialogue("knife_dialog002")
|
||||
else
|
||||
game_api.start_dialogue("knife_dialog001")
|
||||
end
|
||||
else
|
||||
if (player_ghost_aware) then
|
||||
local player_alik_aware = game_api.getIntValue("player_alik_aware")
|
||||
@@ -261,8 +281,8 @@ function on_teachers_door_click()
|
||||
game_api.start_dialogue("door_dialog001")
|
||||
end
|
||||
|
||||
elseif (not teacher_arrived) then
|
||||
game_api.start_dialogue("door_dialog001")
|
||||
elseif (not player_hold_key) then
|
||||
game_api.start_dialogue("door_teacher_dialog001")
|
||||
elseif (not teacher_door_opened) then
|
||||
teacher_door_opened = true
|
||||
game_api.rotate_object("Room_S_2_Leaf001", 90, 0.5, nil)
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Reference in new issue
Block a user