space-game001/resources/start_uni_interior.lua
2026-05-18 21:10:55 +03:00

704 lines
22 KiB
Lua

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.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()
if (teacher_told_about_book) then
if not player_hold_book then
game_api.pickup_item("book")
game_api.deactivate_interactive_object("Book001")
player_hold_book = true
else
game_api.remove_item("book")
game_api.activate_interactive_object("Book001")
player_hold_book = false
end
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
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")
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)
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 teacher_zone001_enter_callback()
game_api.start_dialogue("teacher_dialog002")
game_api.set_trigger_zone_enabled(2, false)
teacher_told_about_book = true
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()
if (game_api.is_darklands()) then
game_api.start_dialogue("ghost_dialog002")
game_api.set_trigger_zone_enabled(3, false)
else
if (night_time == false) then
game_api.start_dialogue("book_dialog001")
game_api.switch_navigation(5)
end
end
end
function book_dialog_zone001_exit_callback()
if (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
else
if (night_time == false) then
if (player_hold_book) then
game_api.start_cutscene("test_cutscene_02")
else
game_api.start_dialogue("book_dialog002")
end
end
end
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)
game_api.set_cutscene_callback("test_cutscene_02", function()
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_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_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)
game_api.set_player_hp(10)
player_left_darklands = true
morning_did_open_door_index = 0
setDay1MorningSetup()
--game_api.switch_navigation(7)
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("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.activate_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", 0)
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!")