hall_door_opened = false teacher_door_opened = false lection_is_over = false player_hold_book = false player_hold_knife = false teacher_arrived = false teacher_told_about_book = false night_time = false player_left_darklands = false morning_can_open_door_index = 0 morning_did_open_door_index = 0 player_ghost_aware = false ghost_gone = false 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") end end game_api.set_trigger_zone_callbacks("lection_hall_zone001", lection_hall_zone001_enter_callback, nil ) function knife_dialog_zone001_enter_callback() print("knife_dialog_zone001_enter_callback--!") local day = game_api.getIntValue("day") if (day == 0) then if (player_hold_knife == false) then if lection_is_over then game_api.start_dialogue("knife_dialog001") game_api.switch_navigation(4) end else if (night_time == false) then game_api.start_dialogue("knife_dialog_second001") game_api.set_trigger_zone_enabled(1, false) end end end end function knife_dialog_zone001_exit_callback() local day = game_api.getIntValue("day") if (day == 0) then print("knife_dialog_zone001_exit_callback--!") if (lection_is_over) then if (teacher_door_opened) then game_api.switch_navigation(3) else game_api.switch_navigation(2) end end end end game_api.set_trigger_zone_callbacks("knife_dialog_zone001", knife_dialog_zone001_enter_callback, knife_dialog_zone001_exit_callback ) function on_knife_pickup() game_api.pickup_item("knife") game_api.deactivate_interactive_object("Knife001") 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) end function on_book_pickup() print("on_book_pickup") local day = game_api.getIntValue("day") if (teacher_told_about_book) then print("on_book_pickup step1") if not player_hold_book then if (night_time) or (day >=1) then game_api.start_dialogue("book_dialog006") else game_api.pickup_item("book") game_api.deactivate_interactive_object("Book001") player_hold_book = true game_api.start_dialogue("book_dialog003") --game_api.set_trigger_zone_enabled(3, true) end else game_api.remove_item("book") game_api.activate_interactive_object("Book001") player_hold_book = false game_api.start_dialogue("book_dialog004") --game_api.set_trigger_zone_enabled(3, false) end else print("on_book_pickup step2") game_api.start_dialogue("book_dialog005") end end function on_bookshelf_clicked() --[[if not player_hold_book then game_api.pickup_item("book") game_api.deactivate_interactive_object("Book001") player_hold_book = true game_api.set_trigger_zone_enabled(3, true) else game_api.remove_item("book") game_api.activate_interactive_object("Book001") player_hold_book = false game_api.set_trigger_zone_enabled(3, false) end]] on_book_pickup() end function on_npc_interact(npc_index) print("[Lua] NPC interaction! Index: " .. tostring(npc_index)) if npc_index == 1 then local day = game_api.getIntValue("day") if (day == 0) then game_api.start_dialogue("knife_dialog001") else if (player_ghost_aware) then local player_alik_aware = game_api.getIntValue("player_alik_aware") if player_alik_aware ==1 then game_api.start_dialogue("aiperi_dialog002") else game_api.start_dialogue("aiperi_dialog001") game_api.setIntValue("player_alik_aware", 1) end else game_api.start_dialogue("aiperi_dialog003") end end end if npc_index == 0 then if (player_ghost_aware) then --game_api.setIntValue("player_has_coursework", 1) local player_has_coursework = game_api.getIntValue("player_has_coursework") local player_has_report_card = game_api.getIntValue("player_has_report_card") local report_card_signed = game_api.getIntValue("report_card_signed") if (report_card_signed == 1) then game_api.start_dialogue("teacher_dialog002") elseif (player_has_coursework == 1 and player_has_report_card==1) then game_api.start_dialogue("teacher_dialog005") game_api.remove_item("coursework") game_api.setIntValue("report_card_signed", 1) elseif (player_has_coursework == 1) then game_api.start_dialogue("teacher_dialog004") else game_api.start_dialogue("teacher_dialog003") end else game_api.start_dialogue("teacher_dialog001") end end if npc_index == 2 then if (player_ghost_aware) then local report_card_signed = game_api.getIntValue("report_card_signed") if (report_card_signed==1) then game_api.start_dialogue("dialog_with_ghost003") else game_api.start_dialogue("dialog_with_ghost002") end else game_api.start_dialogue("dialog_with_ghost001") --player_ghost_aware = true end end end function on_quest_over() ghost_gone = true game_api.set_npc_enabled(2, false) game_api.set_npc_enabled(3, false) game_api.set_npc_enabled(4, false) game_api.set_npc_enabled(5, false) end function on_first_ghost_dialog_over() print("on_first_ghost_dialog_over") player_ghost_aware = true end function on_darklands_over() game_api.set_player_hp(10) game_api.resetPlayerAfterDeath() end function teacher_zone001_enter_callback() game_api.start_dialogue("teacher_dialog002") game_api.set_trigger_zone_enabled(2, false) teacher_told_about_book = true game_api.player_stop() end function on_library_door_click() print("on_library_door_click---") if (player_left_darklands) then if (morning_can_open_door_index==5) then if (morning_did_open_door_index == 0) then morning_did_open_door_index = 5 game_api.start_dialogue("door_unlock_dialog001") game_api.rotate_object("Room_N_2_Leaf001", -90, 0.5, nil) game_api.fade_object("Room_Cover_Corridor_001", 0, 0.5, function() game_api.deactivate_interactive_object("Room_Cover_Corridor_001") end) game_api.switch_navigation(12) end else game_api.start_dialogue("door_dialog001") end elseif (night_time) then game_api.start_dialogue("door_night_dialog001") else if (not lection_is_over) then game_api.start_dialogue("door_dialog001") end end end function on_teachers_door_click() print("on_teachers_door_click---") if (player_left_darklands) then if (morning_can_open_door_index == 3) then if (morning_did_open_door_index == 0) then morning_did_open_door_index = 3 game_api.start_dialogue("door_unlock_dialog001") game_api.rotate_object("Room_S_2_Leaf001", 90, 0.5, nil) game_api.fade_object("Room_Cover_Corridor_001", 0, 0.5, function() game_api.deactivate_interactive_object("Room_Cover_Corridor_001") end) game_api.switch_navigation(10) end else game_api.start_dialogue("door_dialog001") end elseif (not teacher_arrived) then game_api.start_dialogue("door_dialog001") elseif (not teacher_door_opened) then teacher_door_opened = true game_api.rotate_object("Room_S_2_Leaf001", 90, 0.5, nil) game_api.fade_object("Room_Cover_South_3_001", 0, 0.5, function() game_api.deactivate_interactive_object("Room_Cover_South_3_001") end) game_api.switch_navigation(3) end end function on_hall_door_click() print("on_hall_door_click---") if (player_left_darklands) then if (morning_can_open_door_index == 6) then if (morning_did_open_door_index == 0) then morning_did_open_door_index = 6 game_api.start_dialogue("door_unlock_dialog001") game_api.rotate_object("Hall_Leaf001", 90, 0.5, nil) game_api.fade_object("Room_Cover_Corridor_001", 0, 0.5, function() game_api.deactivate_interactive_object("Room_Cover_Corridor_001") end) game_api.switch_navigation(13) end else game_api.start_dialogue("door_dialog001") end elseif (not hall_door_opened) then hall_door_opened = true game_api.switch_navigation(1) game_api.rotate_object("Hall_Leaf001", 90, 0.5, nil) game_api.fade_object("Room_Cover_Main_Hall_001", 0, 0.5, function() game_api.deactivate_interactive_object("Room_Cover_Main_Hall_001") end) game_api.set_npc_enabled(0, true) end end function on_s1_door_click() if (player_left_darklands) then if (morning_can_open_door_index==1) then if (morning_did_open_door_index == 0) then morning_did_open_door_index = 1 game_api.start_dialogue("door_unlock_dialog001") game_api.rotate_object("Room_S_0_Leaf001", 90, 0.5, nil) game_api.fade_object("Room_Cover_Corridor_001", 0, 0.5, function() game_api.deactivate_interactive_object("Room_Cover_Corridor_001") end) game_api.switch_navigation(8) end else game_api.start_dialogue("door_dialog001") end else game_api.start_dialogue("door_dialog001") end end function on_s2_door_click() if (player_left_darklands) then if (morning_can_open_door_index == 2) then if (morning_did_open_door_index == 0) then morning_did_open_door_index = 2 game_api.start_dialogue("door_unlock_dialog001") game_api.rotate_object("Room_S_1_Leaf001", 90, 0.5, nil) game_api.fade_object("Room_Cover_Corridor_001", 0, 0.5, function() game_api.deactivate_interactive_object("Room_Cover_Corridor_001") end) game_api.switch_navigation(9) end else game_api.start_dialogue("door_dialog001") end else game_api.start_dialogue("door_dialog001") end end function on_n2_door_click() print("player_left_darklands") print(player_left_darklands) print("morning_can_open_door_index") print(morning_can_open_door_index) print("morning_did_open_door_index") print(morning_did_open_door_index) if (player_left_darklands) then if (morning_can_open_door_index==4) then if (morning_did_open_door_index == 0) then morning_did_open_door_index = 4 game_api.start_dialogue("door_unlock_dialog001") game_api.rotate_object("Room_N_1_Leaf001", -90, 0.5, nil) game_api.fade_object("Room_Cover_Corridor_001", 0, 0.5, function() game_api.deactivate_interactive_object("Room_Cover_Corridor_001") end) game_api.switch_navigation(11) else --game_api.start_dialogue("door_opened_dialog001") end else game_api.start_dialogue("door_dialog001") end else game_api.start_dialogue("door_dialog001") end end function on_teacher_arrived() print("Teacher arrived") end function on_teacher_arrived2() print("Teacher arrived2") end function book_dialog_zone001_enter_callback() print("book_dialog_zone001_enter_callback step 1") if (game_api.is_darklands()) then print("book_dialog_zone001_enter_callback step 2") game_api.start_dialogue("ghost_dialog002") game_api.set_trigger_zone_enabled(3, false) game_api.advance_darklands_hud() else print("book_dialog_zone001_enter_callback step 3") if (player_hold_book) and (night_time == false) then print("book_dialog_zone001_enter_callback step 4") game_api.player_stop() game_api.start_dialogue("book_dialog001") game_api.switch_navigation(5) end end end function book_dialog_zone001_exit_callback() print("book_dialog_zone001_exit_callback step 1") if (player_hold_book) and (night_time == false) then game_api.switch_navigation(3) end end function on_computer_clicked() print("on_computer_clicked--") local day = game_api.getIntValue("day") if (day == 1) then -- TODO: some dialog like I don't need it print("on_computer_clicked--1") game_api.start_dialogue("computer_dialog003") else if teacher_told_about_book then print("on_computer_clicked--2") if (night_time == false) then print("on_computer_clicked--3") if (player_hold_book) then print("on_computer_clicked--4") game_api.start_cutscene("computer_cutscene001") else print("on_computer_clicked--5") game_api.start_dialogue("book_dialog002") end else print("on_computer_clicked--6") game_api.start_dialogue("computer_dialog002") end else print("on_computer_clicked--7") game_api.start_dialogue("computer_dialog001") end end end function on_sleep_cutscene() print("Cutscene 2 done!") night_time = true --game_api.set_trigger_zone_enabled(1, false) game_api.set_npc_enabled(0, false) game_api.switch_navigation(5) game_api.set_object_rotation("Room_N_2_Leaf001", 0) game_api.set_object_rotation("Hall_Leaf001", 0) game_api.set_object_rotation("Room_S_2_Leaf001", 0) game_api.activate_interactive_object("Room_Cover_Corridor_001") game_api.activate_interactive_object("Room_Cover_Main_Hall_001") game_api.activate_interactive_object("Room_Cover_North_1_001") game_api.activate_interactive_object("Room_Cover_North_2_001") game_api.activate_interactive_object("Room_Cover_South_1_001") game_api.activate_interactive_object("Room_Cover_South_2_001") game_api.activate_interactive_object("Room_Cover_South_3_001") game_api.set_object_alpha("Room_Cover_Corridor_001", 1) game_api.set_object_alpha("Room_Cover_South_3_001", 1) game_api.set_object_alpha("Room_Cover_North_1_001", 1) game_api.set_object_alpha("Room_Cover_Main_Hall_001", 1) game_api.activate_interactive_object("Note001") end function on_teacher_arrived_intermediate() game_api.rotate_object("Room_N_2_Leaf001", -90, 0.5, nil) game_api.fade_object("Room_Cover_North_3_001", 0, 0.5, function() game_api.deactivate_interactive_object("Room_Cover_North_3_001") end) game_api.switch_navigation(2) game_api.npc_walk_to(0, 3.19574, 0, 6.45595, on_teacher_arrived) teacher_arrived = true end game_api.set_cutscene_callback("test_cutscene_01", function() print("Cutscene done!") lection_is_over = true game_api.set_npc_enabled(1, true) game_api.npc_walk_to(0, 0.758123, 0, 6.50063, on_teacher_arrived_intermediate) end) function on_note_pickup() game_api.start_dialogue("note_dialog001") game_api.pickup_item("note_spell") game_api.deactivate_interactive_object("Note001") end function on_report_card_pickup() if player_ghost_aware then local player_has_report_card = game_api.getIntValue("player_has_report_card") local report_card_signed = game_api.getIntValue("report_card_signed") if (player_has_report_card == 1) then game_api.start_dialogue("dialog_report_card003") -- Еще рано возвращать зачетку обратно в шкаф else game_api.start_dialogue("dialog_report_card002") -- Я пожалуй возьму зачетку game_api.pickup_item("report_card") game_api.deactivate_interactive_object("ReportCard001") game_api.setIntValue("player_has_report_card", 1) end else game_api.start_dialogue("dialog_report_card001") end end function on_bookshelf_teacher_clicked() on_report_card_pickup() end first_time_darklands = true game_api.set_darklands_callbacks( function() if (first_time_darklands) then game_api.start_dialogue("ghost_dialog001") first_time_darklands = false end game_api.set_trigger_zone_enabled(1, false) game_api.set_npc_enabled(0, false) game_api.set_npc_enabled(1, false) if (ghost_gone) then game_api.set_npc_enabled(2, false) game_api.set_npc_enabled(3, false) game_api.set_npc_enabled(4, false) game_api.set_npc_enabled(5, false) else game_api.set_npc_enabled(2, true) game_api.set_npc_enabled(3, true) game_api.set_npc_enabled(4, true) game_api.set_npc_enabled(5, true) game_api.npc_set_hp(3, 35) game_api.npc_set_hp(4, 35) game_api.npc_set_hp(5, 35) game_api.npc_set_position(3, 0,0,-6.4) game_api.npc_set_position(4, -5.0,0,12) game_api.npc_set_position(5, 5.0,0,12) end night_time = false game_api.switch_navigation(6) end, function() game_api.start_cutscene("darklands_exit001") game_api.set_npc_enabled(0, false) game_api.set_npc_enabled(1, false) game_api.set_npc_enabled(2, false) game_api.set_npc_enabled(3, false) game_api.set_npc_enabled(4, false) game_api.set_npc_enabled(5, false) game_api.setIntValue("day", 1) game_api.setIntValue("need_sleep", 1) player_left_darklands = true morning_did_open_door_index = 0 setDay1MorningSetup() local px = game_api.get_player_x() local pz = game_api.get_player_z() if (pz > 8.0) then game_api.activate_interactive_object("Room_Cover_Corridor_001") game_api.deactivate_interactive_object("Room_Cover_Main_Hall_001") morning_can_open_door_index = 6 elseif (pz <= 8.0) and (pz > 0) and (px>=1.5) then game_api.activate_interactive_object("Room_Cover_Corridor_001") game_api.deactivate_interactive_object("Room_Cover_North_3_001") morning_can_open_door_index = 5 elseif (pz <= 8.0) and (pz > 0) and (px<=-1.5) then game_api.activate_interactive_object("Room_Cover_Corridor_001") game_api.deactivate_interactive_object("Room_Cover_South_3_001") morning_can_open_door_index = 3 elseif (pz <= 0.0) and (pz > -8) and (px>=1.5) then game_api.activate_interactive_object("Room_Cover_Corridor_001") game_api.deactivate_interactive_object("Room_Cover_North_2_001") morning_can_open_door_index = 4 elseif (pz <= 0.0) and (pz > -8) and (px<=-1.5) then game_api.activate_interactive_object("Room_Cover_Corridor_001") game_api.deactivate_interactive_object("Room_Cover_South_2_001") morning_can_open_door_index = 2 elseif (pz <= -8.0) and (px<=-1.5) then game_api.activate_interactive_object("Room_Cover_Corridor_001") game_api.deactivate_interactive_object("Room_Cover_South_1_001") morning_can_open_door_index = 1 else --All set before morning_can_open_door_index = 0 end end ) game_api.set_trigger_zone_callbacks("teacher_dialog_zone001", teacher_zone001_enter_callback, nil ) game_api.set_trigger_zone_callbacks("book_dialog_zone001", book_dialog_zone001_enter_callback, book_dialog_zone001_exit_callback ) function setDay0setup() game_api.deactivate_interactive_object("Room_Cover_Corridor_001") game_api.deactivate_interactive_object("Room_Cover_North_1_001") game_api.deactivate_interactive_object("Room_Cover_North_2_001") game_api.rotate_object("Room_N_1_Leaf001", -90, 0.01, nil) --game_api.set_object_rotation("Room_N_1_Leaf001", -90) game_api.deactivate_interactive_object("Note001") game_api.set_npc_enabled(0, false) game_api.set_npc_enabled(1, false) game_api.set_npc_enabled(2, false) game_api.set_npc_enabled(3, false) game_api.set_npc_enabled(4, false) game_api.set_npc_enabled(5, false) end function setDay1setup() game_api.set_object_alpha("Room_Cover_North_1_001", 1) game_api.set_object_alpha("Room_Cover_North_2_001", 1) game_api.set_object_alpha("Room_Cover_North_3_001", 1) game_api.set_object_alpha("Room_Cover_South_1_001", 1) game_api.set_object_alpha("Room_Cover_South_2_001", 1) game_api.set_object_alpha("Room_Cover_South_3_001", 1) game_api.set_object_alpha("Room_Cover_Corridor_001", 1) game_api.set_object_alpha("Room_Cover_Main_Hall_001", 1) game_api.deactivate_interactive_object("Room_Cover_Corridor_001") game_api.deactivate_interactive_object("Room_Cover_Main_Hall_001") game_api.deactivate_interactive_object("Room_Cover_North_1_001") game_api.deactivate_interactive_object("Room_Cover_North_2_001") game_api.deactivate_interactive_object("Room_Cover_North_3_001") game_api.activate_interactive_object("Room_Cover_South_1_001") game_api.activate_interactive_object("Room_Cover_South_2_001") game_api.deactivate_interactive_object("Room_Cover_South_3_001") game_api.set_object_rotation("Room_N_0_Leaf001", 0) game_api.set_object_rotation("Room_N_1_Leaf001", -90) game_api.set_object_rotation("Room_N_2_Leaf001", -90) game_api.set_object_rotation("Room_S_0_Leaf001", 0) game_api.set_object_rotation("Room_S_1_Leaf001", 0) game_api.set_object_rotation("Room_S_2_Leaf001", 90) game_api.set_object_rotation("Hall_Leaf001", 90) game_api.set_npc_enabled(0, true) game_api.set_npc_enabled(1, true) game_api.set_npc_enabled(2, false) game_api.set_npc_enabled(3, false) game_api.set_npc_enabled(4, false) game_api.set_npc_enabled(5, false) end function setDay1MorningSetup() game_api.deactivate_interactive_object("Room_Cover_North_1_001") game_api.activate_interactive_object("Room_Cover_North_2_001") game_api.activate_interactive_object("Room_Cover_North_3_001") game_api.activate_interactive_object("Room_Cover_South_1_001") game_api.activate_interactive_object("Room_Cover_South_2_001") game_api.activate_interactive_object("Room_Cover_South_3_001") game_api.deactivate_interactive_object("Room_Cover_Corridor_001") game_api.activate_interactive_object("Room_Cover_Main_Hall_001") game_api.set_object_rotation("Room_N_0_Leaf001", 0) game_api.set_object_rotation("Room_N_1_Leaf001", 0) game_api.set_object_rotation("Room_N_2_Leaf001", 0) game_api.set_object_rotation("Room_S_0_Leaf001", 0) game_api.set_object_rotation("Room_S_1_Leaf001", 0) game_api.set_object_rotation("Room_S_2_Leaf001", 0) game_api.set_object_rotation("Hall_Leaf001", 0) game_api.set_object_alpha("Room_Cover_North_1_001", 1) game_api.set_object_alpha("Room_Cover_North_2_001", 1) game_api.set_object_alpha("Room_Cover_North_3_001", 1) game_api.set_object_alpha("Room_Cover_South_1_001", 1) game_api.set_object_alpha("Room_Cover_South_2_001", 1) game_api.set_object_alpha("Room_Cover_South_3_001", 1) game_api.set_object_alpha("Room_Cover_Corridor_001", 1) game_api.set_object_alpha("Room_Cover_Main_Hall_001", 1) game_api.set_npc_enabled(0, false) game_api.set_npc_enabled(1, false) game_api.set_npc_enabled(2, false) game_api.set_npc_enabled(3, false) game_api.set_npc_enabled(4, false) game_api.set_npc_enabled(5, false) if morning_did_open_door_index == 1 then game_api.deactivate_interactive_object("Room_Cover_South_1_001") game_api.set_object_rotation("Room_S_0_Leaf001", 90) game_api.switch_navigation(8) elseif morning_did_open_door_index == 2 then game_api.deactivate_interactive_object("Room_Cover_South_2_001") game_api.set_object_rotation("Room_S_1_Leaf001", 90) game_api.switch_navigation(9) elseif morning_did_open_door_index == 3 then game_api.deactivate_interactive_object("Room_Cover_South_3_001") game_api.set_object_rotation("Room_S_2_Leaf001", 90) game_api.switch_navigation(10) elseif morning_did_open_door_index == 4 then game_api.deactivate_interactive_object("Room_Cover_North_2_001") game_api.set_object_rotation("Room_N_1_Leaf001", -90) game_api.switch_navigation(11) elseif morning_did_open_door_index == 5 then game_api.deactivate_interactive_object("Room_Cover_North_3_001") game_api.set_object_rotation("Room_N_2_Leaf001", -90) game_api.switch_navigation(12) elseif morning_did_open_door_index == 6 then game_api.deactivate_interactive_object("Room_Cover_Main_Hall_001") game_api.set_object_rotation("Hall_Leaf001", 90) game_api.switch_navigation(13) else game_api.switch_navigation(7) end end game_api.set_location_callbacks( function() print("Enter location uni interior") player_left_darklands = false local hp = game_api.getFloatValue("player_hp") game_api.set_player_hp(hp) local need_sleep = game_api.getIntValue("need_sleep") local day = game_api.getIntValue("day") if (day>0) and (need_sleep==1) then setDay1MorningSetup() --game_api.switch_navigation(7) elseif (day>0) then setDay1setup() game_api.switch_navigation(3) else --Do nothing, it should have been already set up end end, function() print("Exit location uni interior") player_left_darklands = false local hp = game_api.get_player_hp() game_api.setFloatValue("player_hp", hp) end ) setDay0setup() game_api.switch_navigation(0) print("Lua script loaded successfully!")