Updating scripts
This commit is contained in:
parent
21bf3f0710
commit
27b4b19df4
@ -3,7 +3,7 @@
|
|||||||
{
|
{
|
||||||
"id": "phone",
|
"id": "phone",
|
||||||
"name": "Телефон",
|
"name": "Телефон",
|
||||||
"description": "Я не могу себе представить жизнь без своего телефона",
|
"description": "Я не могу себе представить жизнь без своего телефона.",
|
||||||
"icon": "resources/fire2.png"
|
"icon": "resources/fire2.png"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -23,6 +23,24 @@
|
|||||||
"name": "Книга",
|
"name": "Книга",
|
||||||
"description": "Это книга о манасчи Жусупе Мамае.",
|
"description": "Это книга о манасчи Жусупе Мамае.",
|
||||||
"icon": "resources/fire2.png"
|
"icon": "resources/fire2.png"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "note_spell",
|
||||||
|
"name": "Записка",
|
||||||
|
"description": "Тут написано \"Прочитай вслух когда настанет ночь, сквозь двери сможешь ты пройти.\" и текст заклинания.",
|
||||||
|
"icon": "resources/fire2.png"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "report_card",
|
||||||
|
"name": "Зачетка Бегимай",
|
||||||
|
"description": "Это зачетная книжка Бегимай. Сюда нужно поставить оценку за курсовую работу.",
|
||||||
|
"icon": "resources/fire2.png"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "coursework",
|
||||||
|
"name": "Курсовая Бегимай",
|
||||||
|
"description": "Это курсовая работа Бегимай, из-за которой она выбросилась из окна.",
|
||||||
|
"icon": "resources/fire2.png"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@ -30,7 +30,7 @@
|
|||||||
},
|
},
|
||||||
"positionX": 4.03298,
|
"positionX": 4.03298,
|
||||||
"positionY": 0.0,
|
"positionY": 0.0,
|
||||||
"positionZ": -3.61801,
|
"positionZ": 0.61801,
|
||||||
"facingAngle" : 0,
|
"facingAngle" : 0,
|
||||||
"walkSpeed": 1.8,
|
"walkSpeed": 1.8,
|
||||||
"rotationSpeed": 8.0,
|
"rotationSpeed": 8.0,
|
||||||
@ -39,6 +39,34 @@
|
|||||||
"modelCorrectionRotY": 180.0,
|
"modelCorrectionRotY": 180.0,
|
||||||
"modelCorrectionRotZ": 0.0,
|
"modelCorrectionRotZ": 0.0,
|
||||||
"interactionRadius": 2.0
|
"interactionRadius": 2.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "npc_alik",
|
||||||
|
"name": "Алик",
|
||||||
|
"animationIdlePath": "resources/w/jam/man_stand_idle002.anim",
|
||||||
|
"animationWalkPath": "resources/w/jam/man_walk002.anim",
|
||||||
|
"meshTextures": {
|
||||||
|
"Body": "resources/w/jam/male_packed0_diffuse.png",
|
||||||
|
"Bottoms": "resources/w/jam/male_packed1_diffuse.png",
|
||||||
|
"Eyelashes": "resources/w/jam/male_packed0_diffuse.png",
|
||||||
|
"Eyes": "resources/w/jam/male_packed0_diffuse.png",
|
||||||
|
"Eyewear": "resources/w/jam/male_packed0_diffuse.png",
|
||||||
|
"Gloves": "resources/w/jam/male_packed1_diffuse.png",
|
||||||
|
"Hair": "resources/w/jam/male_packed0_diffuse.png",
|
||||||
|
"Shoes": "resources/w/jam/male_packed1_diffuse.png",
|
||||||
|
"Tops": "resources/w/jam/male_packed2_diffuse.png"
|
||||||
|
},
|
||||||
|
"positionX": -6.33478,
|
||||||
|
"positionY": 0.0,
|
||||||
|
"positionZ": -15.0382,
|
||||||
|
"facingAngle" : 3.141592,
|
||||||
|
"walkSpeed": 1.5,
|
||||||
|
"rotationSpeed": 8.0,
|
||||||
|
"modelScale": 0.0001,
|
||||||
|
"modelCorrectionRotX": 0.0,
|
||||||
|
"modelCorrectionRotY": 180.0,
|
||||||
|
"modelCorrectionRotZ": 0.0,
|
||||||
|
"interactionRadius": 2.0
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -133,6 +133,216 @@
|
|||||||
"type": "End"
|
"type": "End"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "dialog_female_student001",
|
||||||
|
"start": "line_1",
|
||||||
|
"nodes": [
|
||||||
|
{
|
||||||
|
"id": "line_1",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Бермет",
|
||||||
|
"portrait": "resources/w/avatar_girl.png",
|
||||||
|
"text": "Бекзат отстань!",
|
||||||
|
"next": "end_1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "end_1",
|
||||||
|
"type": "End"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "dialog_female_student002",
|
||||||
|
"start": "line_1",
|
||||||
|
"nodes": [
|
||||||
|
{
|
||||||
|
"id": "line_1",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Алтынай",
|
||||||
|
"portrait": "resources/w/avatar_girl.png",
|
||||||
|
"text": "Бекзат ты почему на пары не ходишь?!",
|
||||||
|
"next": "end_1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "end_1",
|
||||||
|
"type": "End"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "dialog_alik001",
|
||||||
|
"start": "line_1",
|
||||||
|
"nodes": [
|
||||||
|
{
|
||||||
|
"id": "line_1",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Алик",
|
||||||
|
"portrait": "resources/w/avatar_student.png",
|
||||||
|
"text": "Привет Бекзат! Давно я не видел тебя на парах!",
|
||||||
|
"next": "end_1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "end_1",
|
||||||
|
"type": "End"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "dialog_alik002",
|
||||||
|
"start": "line_1",
|
||||||
|
"nodes": [
|
||||||
|
{
|
||||||
|
"id": "line_1",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Алик",
|
||||||
|
"portrait": "resources/w/avatar_student.png",
|
||||||
|
"text": "Привет Бекзат!",
|
||||||
|
"next": "line_2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "line_2",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Бекзат",
|
||||||
|
"portrait": "resources/w/gg/gg2_s_podsvetkoy5.png",
|
||||||
|
"text": "Привет Алик! Разговор есть.",
|
||||||
|
"next": "line_3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "line_3",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Бекзат",
|
||||||
|
"portrait": "resources/w/gg/gg2_s_podsvetkoy5.png",
|
||||||
|
"text": "С тобой на курсе училась Бегимай, ты ее помнишь?",
|
||||||
|
"next": "line_4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "line_4",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Алик",
|
||||||
|
"portrait": "resources/w/avatar_student.png",
|
||||||
|
"text": "Конечно помню! Я тебе даже больше расскажу.",
|
||||||
|
"next": "line_5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "line_5",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Алик",
|
||||||
|
"portrait": "resources/w/avatar_student.png",
|
||||||
|
"text": "В тот день она принесла свою курсовую, чтобы сдать.",
|
||||||
|
"next": "line_6"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "line_6",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Алик",
|
||||||
|
"portrait": "resources/w/avatar_student.png",
|
||||||
|
"text": "Но в тот день в учительской происходила генеральная уборка.",
|
||||||
|
"next": "line_7"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "line_7",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Алик",
|
||||||
|
"portrait": "resources/w/avatar_student.png",
|
||||||
|
"text": "И получилось так, что ее курсовая оказалась в стопке бумаг на выброс.",
|
||||||
|
"next": "line_8"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "line_8",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Алик",
|
||||||
|
"portrait": "resources/w/avatar_student.png",
|
||||||
|
"text": "Курсовая работа пропала, Бегимай получила за нее ноль баллов, и не прошла отбор в Германию.",
|
||||||
|
"next": "line_9"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "line_9",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Алик",
|
||||||
|
"portrait": "resources/w/avatar_student.png",
|
||||||
|
"text": "Поэтому с горя она выпрыгнула из окна лекционного зала и убилась.",
|
||||||
|
"next": "line_10"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "line_10",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Бекзат",
|
||||||
|
"portrait": "resources/w/gg/gg2_s_podsvetkoy5.png",
|
||||||
|
"text": "А ты откуда все это знаешь?",
|
||||||
|
"next": "line_11"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "line_11",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Алик",
|
||||||
|
"portrait": "resources/w/avatar_student.png",
|
||||||
|
"text": "Я видел как ее курсовую уносили вместе с другой макулатурой из учительской.",
|
||||||
|
"next": "line_12"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "line_12",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Бекзат",
|
||||||
|
"portrait": "resources/w/gg/gg2_s_podsvetkoy5.png",
|
||||||
|
"text": "И где сейчас ее курсовая работа?",
|
||||||
|
"next": "line_13"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "line_13",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Алик",
|
||||||
|
"portrait": "resources/w/avatar_student.png",
|
||||||
|
"text": "За зданием универа есть контейнер с кучей бумажного мусора и макулатурой.",
|
||||||
|
"next": "line_14"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "line_14",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Алик",
|
||||||
|
"portrait": "resources/w/avatar_student.png",
|
||||||
|
"text": "Скорее всего, курсовая до сих пор лежит где-то там.",
|
||||||
|
"next": "line_15"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "line_15",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Бекзат",
|
||||||
|
"portrait": "resources/w/gg/gg2_s_podsvetkoy5.png",
|
||||||
|
"text": "Спасибо Алик! Ты мне очень помог.",
|
||||||
|
"next": "line_16"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "line_16",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Алик",
|
||||||
|
"portrait": "resources/w/avatar_student.png",
|
||||||
|
"text": "Да без проблем! Обращайся если что.",
|
||||||
|
"next": "end_1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "end_1",
|
||||||
|
"type": "End"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "dialog_alik003",
|
||||||
|
"start": "line_1",
|
||||||
|
"nodes": [
|
||||||
|
{
|
||||||
|
"id": "line_1",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Алик",
|
||||||
|
"portrait": "resources/w/avatar_student.png",
|
||||||
|
"text": "Привет Бекзат! Надеюсь ты нашел то что ищешь.",
|
||||||
|
"next": "end_1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "end_1",
|
||||||
|
"type": "End"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"cutscenes": [{
|
"cutscenes": [{
|
||||||
|
|||||||
@ -35,6 +35,40 @@
|
|||||||
"type": "End"
|
"type": "End"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "dialog_contaier002",
|
||||||
|
"start": "line_1",
|
||||||
|
"nodes": [
|
||||||
|
{
|
||||||
|
"id": "line_1",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Бекзат",
|
||||||
|
"portrait": "resources/w/gg/gg2_s_podsvetkoy5.png",
|
||||||
|
"text": "Если Алик не соврал, курсовая работа Бегимай лежит где-то тут.",
|
||||||
|
"next": "line_2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "line_2",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Бекзат",
|
||||||
|
"portrait": "resources/w/gg/gg2_s_podsvetkoy5.png",
|
||||||
|
"text": "[Копается в куче мусора]",
|
||||||
|
"next": "line_3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "line_3",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Бекзат",
|
||||||
|
"portrait": "resources/w/gg/gg2_s_podsvetkoy5.png",
|
||||||
|
"text": "Ага, нашел! Вот и она!",
|
||||||
|
"next": "end_1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "end_1",
|
||||||
|
"type": "End"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"cutscenes": [
|
"cutscenes": [
|
||||||
|
|||||||
@ -149,6 +149,40 @@
|
|||||||
"type": "End"
|
"type": "End"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "aiperi_dialog002",
|
||||||
|
"start": "line_1",
|
||||||
|
"nodes": [
|
||||||
|
{
|
||||||
|
"id": "line_1",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Айпери",
|
||||||
|
"portrait": "resources/w/avatar_girlfriend.png",
|
||||||
|
"text": "Я не знаю какие у тебя там дела, Бекзат,",
|
||||||
|
"next": "line_2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "line_2",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Айпери",
|
||||||
|
"portrait": "resources/w/avatar_girlfriend.png",
|
||||||
|
"text": "Но ты должен вернуть мне нож поскорее, а то я тебе голову оторву!",
|
||||||
|
"next": "line_3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "line_3",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Бекзат",
|
||||||
|
"portrait": "resources/w/gg/gg2_s_podsvetkoy5.png",
|
||||||
|
"text": "Я обещаю, сейчас я один вопрос решу и верну тебе нож.",
|
||||||
|
"next": "end_1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "end_1",
|
||||||
|
"type": "End"
|
||||||
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "door_dialog001",
|
"id": "door_dialog001",
|
||||||
@ -319,6 +353,122 @@
|
|||||||
"type": "End"
|
"type": "End"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "teacher_dialog004",
|
||||||
|
"start": "line_1",
|
||||||
|
"nodes": [
|
||||||
|
{
|
||||||
|
"id": "line_1",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Бекзат",
|
||||||
|
"portrait": "resources/w/gg/gg2_s_podsvetkoy5.png",
|
||||||
|
"text": "Аида Дженибековна, Бегимай хотела вам курсовую сдать, вы помните?",
|
||||||
|
"next": "line_2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "line_1",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Бекзат",
|
||||||
|
"portrait": "resources/w/gg/gg2_s_podsvetkoy5.png",
|
||||||
|
"text": "Я принес вам ее курсовую, можете посмотреть?",
|
||||||
|
"next": "line_2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "line_2",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Аида Дженибековна",
|
||||||
|
"portrait": "resources/w/avatar_teacher.png",
|
||||||
|
"text": "Хорошо, давай посмотрим.",
|
||||||
|
"next": "line_3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "line_3",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Аида Дженибековна",
|
||||||
|
"portrait": "resources/w/avatar_teacher.png",
|
||||||
|
"text": "Да, это ее курсовая работа, я вижу.",
|
||||||
|
"next": "line_4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "line_4",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Аида Дженибековна",
|
||||||
|
"portrait": "resources/w/avatar_teacher.png",
|
||||||
|
"text": "Там в шкафу лежат зачетки, найди мне зачетку и принеси мне.",
|
||||||
|
"next": "line_5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "line_5",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Бекзат",
|
||||||
|
"portrait": "resources/w/gg/gg2_s_podsvetkoy5.png",
|
||||||
|
"text": "Хорошо!",
|
||||||
|
"next": "end_1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "end_1",
|
||||||
|
"type": "End"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "teacher_dialog005",
|
||||||
|
"start": "line_1",
|
||||||
|
"nodes": [
|
||||||
|
{
|
||||||
|
"id": "line_1",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Бекзат",
|
||||||
|
"portrait": "resources/w/gg/gg2_s_podsvetkoy5.png",
|
||||||
|
"text": "Аида Дженибековна, Бегимай хотела вам курсовую сдать, вы помните?",
|
||||||
|
"next": "line_2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "line_2",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Бекзат",
|
||||||
|
"portrait": "resources/w/gg/gg2_s_podsvetkoy5.png",
|
||||||
|
"text": "Я принес вам ее зачетку и ее курсовую работу, посмотрите пожалуйста.",
|
||||||
|
"next": "line_3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "line_3",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Аида Дженибековна",
|
||||||
|
"portrait": "resources/w/avatar_teacher.png",
|
||||||
|
"text": "Хорошо, давай посмотрим.",
|
||||||
|
"next": "line_4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "line_4",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Аида Дженибековна",
|
||||||
|
"portrait": "resources/w/avatar_teacher.png",
|
||||||
|
"text": "Да, я вижу что курсовая написана хорошо, я ставлю ей максимальный балл.",
|
||||||
|
"next": "line_5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "line_5",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Аида Дженибековна",
|
||||||
|
"portrait": "resources/w/avatar_teacher.png",
|
||||||
|
"text": "Вот держи зачетку с оценкой, положи ее обратно в шкаф.",
|
||||||
|
"next": "line_6"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "line_6",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Бекзат",
|
||||||
|
"portrait": "resources/w/gg/gg2_s_podsvetkoy5.png",
|
||||||
|
"text": "Хорошо!",
|
||||||
|
"next": "end_1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "end_1",
|
||||||
|
"type": "End"
|
||||||
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "book_dialog001",
|
"id": "book_dialog001",
|
||||||
@ -421,7 +571,7 @@
|
|||||||
{
|
{
|
||||||
"id": "line_3",
|
"id": "line_3",
|
||||||
"type": "Line",
|
"type": "Line",
|
||||||
"speaker": "Призрак",
|
"speaker": "Бегимай",
|
||||||
"portrait": "resources/w/avatar_ghost.png",
|
"portrait": "resources/w/avatar_ghost.png",
|
||||||
"text": "Меня зовут Бегимай, мне нужно сдать курсовую по манасоведению.",
|
"text": "Меня зовут Бегимай, мне нужно сдать курсовую по манасоведению.",
|
||||||
"next": "line_4"
|
"next": "line_4"
|
||||||
@ -429,7 +579,7 @@
|
|||||||
{
|
{
|
||||||
"id": "line_4",
|
"id": "line_4",
|
||||||
"type": "Line",
|
"type": "Line",
|
||||||
"speaker": "Призрак",
|
"speaker": "Бегимай",
|
||||||
"portrait": "resources/w/avatar_ghost.png",
|
"portrait": "resources/w/avatar_ghost.png",
|
||||||
"text": "Я появляюсь здесь каждую ночь, чтобы сдать курсовую.",
|
"text": "Я появляюсь здесь каждую ночь, чтобы сдать курсовую.",
|
||||||
"next": "line_5"
|
"next": "line_5"
|
||||||
@ -445,7 +595,7 @@
|
|||||||
{
|
{
|
||||||
"id": "line_6",
|
"id": "line_6",
|
||||||
"type": "Line",
|
"type": "Line",
|
||||||
"speaker": "Призрак",
|
"speaker": "Бегимай",
|
||||||
"portrait": "resources/w/avatar_ghost.png",
|
"portrait": "resources/w/avatar_ghost.png",
|
||||||
"text": "Я уйду на покой только когда увиду оценку по курсовой в своей зачетке.",
|
"text": "Я уйду на покой только когда увиду оценку по курсовой в своей зачетке.",
|
||||||
"next": "line_7"
|
"next": "line_7"
|
||||||
@ -453,9 +603,9 @@
|
|||||||
{
|
{
|
||||||
"id": "line_7",
|
"id": "line_7",
|
||||||
"type": "Line",
|
"type": "Line",
|
||||||
"speaker": "Призрак",
|
"speaker": "Бегимай",
|
||||||
"portrait": "resources/w/avatar_ghost.png",
|
"portrait": "resources/w/avatar_ghost.png",
|
||||||
"text": "Я уйду из этого мира только когда я сдам курсовую. Поэтому я появляюсь здесь каждую ночь.",
|
"text": "А до тех пор, я буду появлятся здесь каждую ночь.",
|
||||||
"next": "line_8"
|
"next": "line_8"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -471,6 +621,114 @@
|
|||||||
"type": "End"
|
"type": "End"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "dialog_with_ghost002",
|
||||||
|
"start": "line_1",
|
||||||
|
"nodes": [
|
||||||
|
{
|
||||||
|
"id": "line_1",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Бегимай",
|
||||||
|
"portrait": "resources/w/avatar_ghost.png",
|
||||||
|
"text": "Я Бегимай, мне нужно сдать курсовую по манасоведению.",
|
||||||
|
"next": "line_2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "line_2",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Бегимай",
|
||||||
|
"portrait": "resources/w/avatar_ghost.png",
|
||||||
|
"text": "Я появляюсь здесь каждую ночь, чтобы сдать курсовую.",
|
||||||
|
"next": "line_3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "line_3",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Бегимай",
|
||||||
|
"portrait": "resources/w/avatar_ghost.png",
|
||||||
|
"text": "Я уйду на покой только когда увиду оценку по курсовой в своей зачетке.",
|
||||||
|
"next": "line_4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "line_4",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Бекзат",
|
||||||
|
"portrait": "resources/w/gg/gg2_s_podsvetkoy5.png",
|
||||||
|
"text": "Ладно, я что-нибудь придумаю.",
|
||||||
|
"next": "end_1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "end_1",
|
||||||
|
"type": "End"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "dialog_with_ghost003",
|
||||||
|
"start": "line_1",
|
||||||
|
"nodes": [
|
||||||
|
{
|
||||||
|
"id": "line_1",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Бекзат",
|
||||||
|
"portrait": "resources/w/gg/gg2_s_podsvetkoy5.png",
|
||||||
|
"text": "Эй простыня, посмотри сюда.",
|
||||||
|
"next": "line_2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "line_2",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Бегимай",
|
||||||
|
"portrait": "resources/w/avatar_ghost.png",
|
||||||
|
"text": "Что это?",
|
||||||
|
"next": "line_3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "line_3",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Бекзат",
|
||||||
|
"portrait": "resources/w/gg/gg2_s_podsvetkoy5.png",
|
||||||
|
"text": "Это твоя зачетка.",
|
||||||
|
"next": "line_4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "line_4",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Бекзат",
|
||||||
|
"portrait": "resources/w/gg/gg2_s_podsvetkoy5.png",
|
||||||
|
"text": "Тебе поставили за курсовую максимальный балл!",
|
||||||
|
"next": "line_5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "line_5",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Бегимай",
|
||||||
|
"portrait": "resources/w/avatar_ghost.png",
|
||||||
|
"text": "Неужели! Наконец-то, мое предназначение исполнено.",
|
||||||
|
"next": "line_6"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "line_6",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Бегимай",
|
||||||
|
"portrait": "resources/w/avatar_ghost.png",
|
||||||
|
"text": "Теперь я могу уйти на покой.",
|
||||||
|
"next": "line_7"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "line_7",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Бекзат",
|
||||||
|
"portrait": "resources/w/gg/gg2_s_podsvetkoy5.png",
|
||||||
|
"text": "Давай, иди отдыхай.",
|
||||||
|
"next": "end_1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "end_1",
|
||||||
|
"type": "End"
|
||||||
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "note_dialog001",
|
"id": "note_dialog001",
|
||||||
@ -533,6 +791,42 @@
|
|||||||
"type": "End"
|
"type": "End"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "dialog_report_card002",
|
||||||
|
"start": "line_1",
|
||||||
|
"nodes": [
|
||||||
|
{
|
||||||
|
"id": "line_1",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Бекзат",
|
||||||
|
"portrait": "resources/w/gg/gg2_s_podsvetkoy5.png",
|
||||||
|
"text": "Здесь лежит зачетка Бегимай. Я пожалуй, возьму ее.",
|
||||||
|
"next": "end_1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "end_1",
|
||||||
|
"type": "End"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "dialog_report_card003",
|
||||||
|
"start": "line_1",
|
||||||
|
"nodes": [
|
||||||
|
{
|
||||||
|
"id": "line_1",
|
||||||
|
"type": "Line",
|
||||||
|
"speaker": "Бекзат",
|
||||||
|
"portrait": "resources/w/gg/gg2_s_podsvetkoy5.png",
|
||||||
|
"text": "Мне еще рано возвращать зачетку Бегимай обратно в шкаф.",
|
||||||
|
"next": "end_1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "end_1",
|
||||||
|
"type": "End"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"cutscenes": [
|
"cutscenes": [
|
||||||
@ -625,99 +919,48 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "test_cutscene_pan_01",
|
"id": "darklands_exit001",
|
||||||
"background": "resources/first_cutscene.png",
|
"background": "resources/test_cutscene001.png",
|
||||||
"durationMs": 12000,
|
"durationMs": 5000,
|
||||||
|
"fadeOutMs": 500,
|
||||||
|
"fadeInMs": 500,
|
||||||
|
"endFadeOutMs": 500,
|
||||||
|
"endFadeInMs": 500,
|
||||||
"cameraTrack": [
|
"cameraTrack": [
|
||||||
{
|
{
|
||||||
"durationMs": 1200,
|
"durationMs": 3000,
|
||||||
"from": { "anchor": "Center", "zoom": 1.00, "rotationDeg": 0.0 },
|
"from": { "focusX": 0.3, "focusY": 0.50, "zoom": 1.10, "rotationDeg": 0.0 },
|
||||||
"to": { "anchor": "Center", "zoom": 1.00, "rotationDeg": 0.0 },
|
"to": { "focusX": 0.7, "focusY": 0.50, "zoom": 1.00, "rotationDeg": 0.0 },
|
||||||
"easing": "Linear"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"durationMs": 2500,
|
|
||||||
"from": { "anchor": "Center", "zoom": 1.00, "rotationDeg": 0.0 },
|
|
||||||
"to": { "anchor": "TopLeft", "zoom": 1.55, "rotationDeg": 0.0 },
|
|
||||||
"easing": "EaseInOutSine"
|
"easing": "EaseInOutSine"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"durationMs": 2600,
|
"durationMs": 3000,
|
||||||
"from": { "anchor": "TopLeft", "zoom": 1.55, "rotationDeg": 0.0 },
|
"from": { "focusX": 0.3, "focusY": 0.50, "zoom": 1.0, "rotationDeg": 0.0 },
|
||||||
"to": { "anchor": "TopRight", "zoom": 1.55, "rotationDeg": 0.0 },
|
"to": { "focusX": 0.7, "focusY": 0.50, "zoom": 1.1, "rotationDeg": 0.0 },
|
||||||
"easing": "EaseInOutSine"
|
"easing": "EaseInOutCubic"
|
||||||
},
|
|
||||||
{
|
|
||||||
"durationMs": 1800,
|
|
||||||
"from": { "anchor": "TopRight", "zoom": 1.55, "rotationDeg": 0.0 },
|
|
||||||
"to": { "anchor": "BottomRight", "zoom": 1.72, "rotationDeg": 0.0 },
|
|
||||||
"easing": "EaseInCubic"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"durationMs": 3900,
|
|
||||||
"from": { "anchor": "BottomRight", "zoom": 1.72, "rotationDeg": 0.0 },
|
|
||||||
"to": { "anchor": "BottomLeft", "zoom": 1.55, "rotationDeg": 0.0 },
|
|
||||||
"easing": "EaseInOutSine"
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"lines": [
|
"lines": [
|
||||||
{
|
{
|
||||||
"speaker": "Narrator",
|
"speaker": "Бекзат",
|
||||||
"portrait": "resources/hero.png",
|
"portrait": "resources/hero.png",
|
||||||
"text": "The memory begins in silence.",
|
"text": "Кажется, после того как я умер, я очнулся.",
|
||||||
"durationMs": 2200
|
"durationMs": 3000
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"speaker": "Narrator",
|
"speaker": "Бекзат",
|
||||||
"portrait": "resources/hero.png",
|
"portrait": "resources/hero.png",
|
||||||
"text": "Something is drawing your eyes across the whole scene.",
|
"text": "Жесть вообще, хочу спать.",
|
||||||
"durationMs": 2800
|
"durationMs": 3000
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"speaker": "Ghost",
|
"speaker": "Бекзат",
|
||||||
"portrait": "resources/ghost_avatar.png",
|
"portrait": "resources/hero.png",
|
||||||
"text": "Do not look away.",
|
"text": "Который час?",
|
||||||
"durationMs": 2400
|
"durationMs": 2000,
|
||||||
}
|
"background": "resources/test_cutscene001.png"
|
||||||
]
|
}
|
||||||
},
|
]
|
||||||
{
|
|
||||||
"id": "test_cutscene_pan_02",
|
|
||||||
"background": "resources/first_cutscene.png",
|
|
||||||
"durationMs": 12000,
|
|
||||||
"cameraTrack": [
|
|
||||||
{
|
|
||||||
"durationMs": 1200,
|
|
||||||
"from": { "anchor": "Center", "zoom": 1.00, "rotationDeg": 0.0 },
|
|
||||||
"to": { "anchor": "Center", "zoom": 1.00, "rotationDeg": 0.0 },
|
|
||||||
"easing": "Linear"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"durationMs": 2500,
|
|
||||||
"from": { "anchor": "Center", "zoom": 1.00, "rotationDeg": 0.0 },
|
|
||||||
"to": { "anchor": "TopLeft", "zoom": 1.55, "rotationDeg": 0.0 },
|
|
||||||
"easing": "EaseInOutSine"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"durationMs": 2600,
|
|
||||||
"from": { "anchor": "TopLeft", "zoom": 1.55, "rotationDeg": 0.0 },
|
|
||||||
"to": { "anchor": "TopRight", "zoom": 1.55, "rotationDeg": 0.0 },
|
|
||||||
"easing": "EaseInOutSine"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"durationMs": 1800,
|
|
||||||
"from": { "anchor": "TopRight", "zoom": 1.55, "rotationDeg": 0.0 },
|
|
||||||
"to": { "anchor": "BottomRight", "zoom": 1.72, "rotationDeg": 0.0 },
|
|
||||||
"easing": "EaseInCubic"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"durationMs": 3900,
|
|
||||||
"from": { "anchor": "BottomRight", "zoom": 1.72, "rotationDeg": 0.0 },
|
|
||||||
"to": { "anchor": "BottomLeft", "zoom": 1.55, "rotationDeg": 0.0 },
|
|
||||||
"easing": "EaseInOutSine"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"lines": []
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@ -17,6 +17,27 @@ game_api.start_dialogue("dialog_start001")
|
|||||||
phone_picked_up = false
|
phone_picked_up = false
|
||||||
journal_picked_up = false
|
journal_picked_up = false
|
||||||
|
|
||||||
|
function on_npc_interact(npc_index)
|
||||||
|
if npc_index == 2 then
|
||||||
|
local player_alik_aware = game_api.getIntValue("player_alik_aware")
|
||||||
|
local player_container_aware = game_api.getIntValue("player_container_aware")
|
||||||
|
if player_container_aware == 1 then
|
||||||
|
game_api.start_dialogue("dialog_alik003")
|
||||||
|
elseif player_alik_aware == 1 then
|
||||||
|
game_api.start_dialogue("dialog_alik002")
|
||||||
|
game_api.setIntValue("player_container_aware", 1)
|
||||||
|
else
|
||||||
|
game_api.start_dialogue("dialog_alik001")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if npc_index == 0 then
|
||||||
|
game_api.start_dialogue("dialog_female_student001")
|
||||||
|
end
|
||||||
|
if npc_index == 1 then
|
||||||
|
game_api.start_dialogue("dialog_female_student002")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
function on_phone_pickup()
|
function on_phone_pickup()
|
||||||
game_api.pickup_item("phone")
|
game_api.pickup_item("phone")
|
||||||
|
|||||||
@ -21,8 +21,15 @@ function darklands_exit001_enter_callback()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function on_container_clicked()
|
function on_container_clicked()
|
||||||
|
local player_container_aware = game_api.getIntValue("player_container_aware")
|
||||||
|
if player_container_aware == 1 then
|
||||||
|
game_api.start_dialogue("dialog_contaier002")
|
||||||
|
game_api.pickup_item("coursework")
|
||||||
|
game_api.setIntValue("player_has_coursework", 1)
|
||||||
|
else
|
||||||
game_api.start_dialogue("dialog_contaier001")
|
game_api.start_dialogue("dialog_contaier001")
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
game_api.set_darklands_callbacks(
|
game_api.set_darklands_callbacks(
|
||||||
nil,
|
nil,
|
||||||
|
|||||||
@ -15,6 +15,8 @@ player_in_darklands = false
|
|||||||
|
|
||||||
player_ghost_aware = false
|
player_ghost_aware = false
|
||||||
|
|
||||||
|
ghost_gone = false
|
||||||
|
|
||||||
function lection_hall_zone001_enter_callback()
|
function lection_hall_zone001_enter_callback()
|
||||||
--game_api.start_dialogue("")
|
--game_api.start_dialogue("")
|
||||||
--Start cutscene
|
--Start cutscene
|
||||||
@ -104,24 +106,58 @@ function on_npc_interact(npc_index)
|
|||||||
print("[Lua] NPC interaction! Index: " .. tostring(npc_index))
|
print("[Lua] NPC interaction! Index: " .. tostring(npc_index))
|
||||||
if npc_index == 1 then
|
if npc_index == 1 then
|
||||||
if (player_ghost_aware) then
|
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.start_dialogue("aiperi_dialog001")
|
||||||
|
game_api.setIntValue("player_alik_aware", 1)
|
||||||
|
end
|
||||||
else
|
else
|
||||||
game_api.start_dialogue("knife_dialog001")
|
game_api.start_dialogue("knife_dialog001")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if npc_index == 0 then
|
if npc_index == 0 then
|
||||||
if (player_ghost_aware) 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")
|
game_api.start_dialogue("teacher_dialog003")
|
||||||
|
end
|
||||||
else
|
else
|
||||||
game_api.start_dialogue("teacher_dialog001")
|
game_api.start_dialogue("teacher_dialog001")
|
||||||
end
|
end
|
||||||
--game_api.set_trigger_zone_enabled(2, false)
|
|
||||||
end
|
end
|
||||||
if npc_index == 2 then
|
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")
|
game_api.start_dialogue("dialog_with_ghost001")
|
||||||
player_ghost_aware = true
|
player_ghost_aware = true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
function teacher_zone001_enter_callback()
|
function teacher_zone001_enter_callback()
|
||||||
game_api.start_dialogue("teacher_dialog002")
|
game_api.start_dialogue("teacher_dialog002")
|
||||||
@ -236,7 +272,10 @@ game_api.set_cutscene_callback("test_cutscene_02", function()
|
|||||||
--game_api.set_trigger_zone_enabled(1, false)
|
--game_api.set_trigger_zone_enabled(1, false)
|
||||||
game_api.set_npc_enabled(0, false)
|
game_api.set_npc_enabled(0, false)
|
||||||
game_api.switch_navigation(5)
|
game_api.switch_navigation(5)
|
||||||
game_api.rotate_object("Room_N_2_Leaf001", 90, 0.01, nil)
|
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_Corridor_001")
|
||||||
game_api.activate_interactive_object("Room_Cover_Main_Hall_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_1_001")
|
||||||
@ -244,10 +283,10 @@ game_api.set_cutscene_callback("test_cutscene_02", function()
|
|||||||
game_api.activate_interactive_object("Room_Cover_South_1_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_2_001")
|
||||||
game_api.activate_interactive_object("Room_Cover_South_3_001")
|
game_api.activate_interactive_object("Room_Cover_South_3_001")
|
||||||
game_api.fade_object("Room_Cover_Corridor_001", 1, 0.01, nil)
|
game_api.set_object_alpha("Room_Cover_Corridor_001", 1)
|
||||||
game_api.fade_object("Room_Cover_South_3_001", 1, 0.01, nil)
|
game_api.set_object_alpha("Room_Cover_South_3_001", 1)
|
||||||
game_api.fade_object("Room_Cover_North_1_001", 1, 0.01, nil)
|
game_api.set_object_alpha("Room_Cover_North_1_001", 1)
|
||||||
game_api.fade_object("Room_Cover_Main_Hall_001", 1, 0.01, nil)
|
game_api.set_object_alpha("Room_Cover_Main_Hall_001", 1)
|
||||||
game_api.activate_interactive_object("Note001")
|
game_api.activate_interactive_object("Note001")
|
||||||
|
|
||||||
end)
|
end)
|
||||||
@ -259,37 +298,78 @@ game_api.deactivate_interactive_object("Note001")
|
|||||||
end
|
end
|
||||||
|
|
||||||
function on_report_card_pickup()
|
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")
|
game_api.start_dialogue("dialog_report_card001")
|
||||||
end
|
end
|
||||||
|
end
|
||||||
function on_bookshelf_teacher_clicked()
|
function on_bookshelf_teacher_clicked()
|
||||||
game_api.start_dialogue("dialog_report_card001")
|
on_report_card_pickup()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
first_time_darklands = true
|
||||||
|
|
||||||
game_api.set_darklands_callbacks(
|
game_api.set_darklands_callbacks(
|
||||||
function()
|
function()
|
||||||
|
if (first_time_darklands) then
|
||||||
game_api.start_dialogue("ghost_dialog001")
|
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(2, true)
|
||||||
game_api.set_npc_enabled(3, true)
|
game_api.set_npc_enabled(3, true)
|
||||||
game_api.set_npc_enabled(4, true)
|
game_api.set_npc_enabled(4, true)
|
||||||
game_api.set_npc_enabled(5, 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
|
||||||
|
|
||||||
game_api.switch_navigation(6)
|
game_api.switch_navigation(6)
|
||||||
player_in_darklands = true
|
player_in_darklands = true
|
||||||
|
|
||||||
end,
|
end,
|
||||||
function()
|
function()
|
||||||
player_in_darklands = false
|
player_in_darklands = false
|
||||||
game_api.start_cutscene("test_cutscene_03")
|
game_api.start_cutscene("darklands_exit001")
|
||||||
game_api.set_npc_enabled(2, false)
|
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(2, false)
|
||||||
game_api.set_npc_enabled(3, false)
|
game_api.set_npc_enabled(3, false)
|
||||||
game_api.set_npc_enabled(4, false)
|
game_api.set_npc_enabled(4, false)
|
||||||
game_api.set_npc_enabled(5, false)
|
game_api.set_npc_enabled(5, false)
|
||||||
game_api.switch_navigation(3)
|
game_api.switch_navigation(0) -- todo fix
|
||||||
game_api.setIntValue("day", 1)
|
game_api.setIntValue("day", 1)
|
||||||
game_api.setIntValue("need_sleep", 1)
|
game_api.setIntValue("need_sleep", 1)
|
||||||
game_api.set_player_hp(10)
|
game_api.set_player_hp(10)
|
||||||
|
setDay1MorningSetup()
|
||||||
end
|
end
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -304,20 +384,29 @@ game_api.set_trigger_zone_callbacks("book_dialog_zone001",
|
|||||||
book_dialog_zone001_exit_callback
|
book_dialog_zone001_exit_callback
|
||||||
)
|
)
|
||||||
|
|
||||||
|
function setDay0setup()
|
||||||
game_api.deactivate_interactive_object("Room_Cover_Corridor_001")
|
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_1_001")
|
||||||
game_api.deactivate_interactive_object("Note001")
|
game_api.deactivate_interactive_object("Note001")
|
||||||
|
|
||||||
|
|
||||||
game_api.set_npc_enabled(0, false)
|
game_api.set_npc_enabled(0, false)
|
||||||
game_api.set_npc_enabled(1, false)
|
game_api.set_npc_enabled(1, false)
|
||||||
game_api.set_npc_enabled(2, false)
|
game_api.set_npc_enabled(2, false)
|
||||||
game_api.set_npc_enabled(3, false)
|
game_api.set_npc_enabled(3, false)
|
||||||
game_api.set_npc_enabled(4, false)
|
game_api.set_npc_enabled(4, false)
|
||||||
game_api.set_npc_enabled(5, false)
|
game_api.set_npc_enabled(5, false)
|
||||||
|
end
|
||||||
|
|
||||||
function setDay1setup()
|
function setDay1setup()
|
||||||
game_api.switch_navigation(5)
|
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_Corridor_001")
|
||||||
game_api.deactivate_interactive_object("Room_Cover_Main_Hall_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_1_001")
|
||||||
@ -326,6 +415,15 @@ function setDay1setup()
|
|||||||
game_api.activate_interactive_object("Room_Cover_South_1_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_2_001")
|
||||||
game_api.deactivate_interactive_object("Room_Cover_South_3_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(0, true)
|
||||||
game_api.set_npc_enabled(1, true)
|
game_api.set_npc_enabled(1, true)
|
||||||
game_api.set_npc_enabled(2, false)
|
game_api.set_npc_enabled(2, false)
|
||||||
@ -334,19 +432,61 @@ function setDay1setup()
|
|||||||
game_api.set_npc_enabled(5, false)
|
game_api.set_npc_enabled(5, false)
|
||||||
end
|
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)
|
||||||
|
end
|
||||||
|
|
||||||
game_api.set_location_callbacks(
|
game_api.set_location_callbacks(
|
||||||
function()
|
function()
|
||||||
print("Enter location uni interior")
|
print("Enter location uni interior")
|
||||||
local hp = game_api.getFloatValue("player_hp")
|
local hp = game_api.getFloatValue("player_hp")
|
||||||
game_api.set_player_hp(hp)
|
game_api.set_player_hp(hp)
|
||||||
--[[
|
|
||||||
local need_sleep = game_api.getIntValue("need_sleep")
|
local need_sleep = game_api.getIntValue("need_sleep")
|
||||||
local day = game_api.getIntValue("day")
|
local day = game_api.getIntValue("day")
|
||||||
if (day==1) then
|
if (day>0) and (need_sleep==1) then
|
||||||
|
setDay1MorningSetup()
|
||||||
|
game_api.switch_navigation(0)
|
||||||
|
elseif (day>0) then
|
||||||
setDay1setup()
|
setDay1setup()
|
||||||
end]]
|
game_api.switch_navigation(5)
|
||||||
|
else
|
||||||
|
setDay0setup()
|
||||||
|
game_api.switch_navigation(0)
|
||||||
|
end
|
||||||
end,
|
end,
|
||||||
function()
|
function()
|
||||||
print("Exit location uni interior")
|
print("Exit location uni interior")
|
||||||
|
|||||||
@ -7,6 +7,7 @@
|
|||||||
#include "GameConstants.h"
|
#include "GameConstants.h"
|
||||||
#include "Environment.h"
|
#include "Environment.h"
|
||||||
|
|
||||||
|
|
||||||
namespace ZL {
|
namespace ZL {
|
||||||
|
|
||||||
const float ATTACK_COOLDOWN_TIME = 1.6f;
|
const float ATTACK_COOLDOWN_TIME = 1.6f;
|
||||||
|
|||||||
@ -188,7 +188,6 @@ namespace ZL
|
|||||||
|
|
||||||
ItemRegistry::instance().loadFromJson("resources/config2/items.json", CONST_ZIP_FILE);
|
ItemRegistry::instance().loadFromJson("resources/config2/items.json", CONST_ZIP_FILE);
|
||||||
|
|
||||||
|
|
||||||
globalFloats["player_hp"] = 200;
|
globalFloats["player_hp"] = 200;
|
||||||
|
|
||||||
LocationSetup uniInteriorParams;
|
LocationSetup uniInteriorParams;
|
||||||
|
|||||||
@ -78,7 +78,6 @@ namespace ZL
|
|||||||
player->loadBinaryAnimation(AnimationState::DEATH_IDLE, "resources/w/gg/new/gg_die_idle001.anim", CONST_ZIP_FILE);
|
player->loadBinaryAnimation(AnimationState::DEATH_IDLE, "resources/w/gg/new/gg_die_idle001.anim", CONST_ZIP_FILE);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
player->weaponTexture = renderer.textureManager.LoadFromPng("resources/w/white.png", CONST_ZIP_FILE);
|
player->weaponTexture = renderer.textureManager.LoadFromPng("resources/w/white.png", CONST_ZIP_FILE);
|
||||||
player->weaponMesh.data = LoadFromTextFile02("resources/w/gg/knife002.txt", CONST_ZIP_FILE);
|
player->weaponMesh.data = LoadFromTextFile02("resources/w/gg/knife002.txt", CONST_ZIP_FILE);
|
||||||
player->weaponMesh.data.Scale(0.1f);
|
player->weaponMesh.data.Scale(0.1f);
|
||||||
|
|||||||
@ -101,6 +101,28 @@ namespace ZL {
|
|||||||
std::cerr << "[script] activate_interactive_object: not found: " << objectName << std::endl;
|
std::cerr << "[script] activate_interactive_object: not found: " << objectName << std::endl;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
api.set_function("set_object_rotation", [game](const std::string& objectName, float value) {
|
||||||
|
for (auto& intObj : game->interactiveObjects) {
|
||||||
|
if (intObj.loadedObject.name == objectName) {
|
||||||
|
intObj.rotationY = value;
|
||||||
|
std::cout << "[script] set_object_rotation: " << objectName << " " << value << std::endl;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
std::cerr << "[script] set_object_rotation: not found: " << objectName << std::endl;
|
||||||
|
});
|
||||||
|
|
||||||
|
api.set_function("set_object_alpha", [game](const std::string& objectName, float value) {
|
||||||
|
for (auto& intObj : game->interactiveObjects) {
|
||||||
|
if (intObj.loadedObject.name == objectName) {
|
||||||
|
intObj.alpha = value;
|
||||||
|
std::cout << "[script] set_object_alpha: " <<objectName << " " << value << std::endl;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
std::cerr << "[script] set_object_alpha: not found: " << objectName << std::endl;
|
||||||
|
});
|
||||||
|
|
||||||
// get_inventory_count()
|
// get_inventory_count()
|
||||||
api.set_function("get_inventory_count", [inventory]() {
|
api.set_function("get_inventory_count", [inventory]() {
|
||||||
return inventory->getCount();
|
return inventory->getCount();
|
||||||
@ -209,7 +231,14 @@ namespace ZL {
|
|||||||
api.set_function("set_player_hp",
|
api.set_function("set_player_hp",
|
||||||
[game](float value) {
|
[game](float value) {
|
||||||
if (game->player)
|
if (game->player)
|
||||||
|
{
|
||||||
game->player->hp = value;
|
game->player->hp = value;
|
||||||
|
if (game->player->currentState == AnimationState::ACTION_TO_DEATH || game->player->currentState == AnimationState::DEATH_IDLE)
|
||||||
|
{
|
||||||
|
game->player->currentState = AnimationState::STAND;
|
||||||
|
game->player->resetAnim = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
// get_player_hp() → float (0 if no player)
|
// get_player_hp() → float (0 if no player)
|
||||||
api.set_function("get_player_hp",
|
api.set_function("get_player_hp",
|
||||||
@ -254,6 +283,42 @@ namespace ZL {
|
|||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
// npc_set_hp(index, value) — sets an NPC's current HP directly.
|
||||||
|
api.set_function("npc_set_hp",
|
||||||
|
[game](int index, float value) {
|
||||||
|
auto& npcs = game->npcs;
|
||||||
|
if (index < 0 || index >= static_cast<int>(npcs.size())) {
|
||||||
|
std::cerr << "[script] npc_set_hp: index " << index << " out of range\n";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
npcs[index]->hp = value;
|
||||||
|
});
|
||||||
|
|
||||||
|
// npc_set_position(index, x, y, z) — teleports an NPC instantly, no walking.
|
||||||
|
api.set_function("npc_set_position",
|
||||||
|
[game](int index, float x, float y, float z) {
|
||||||
|
auto& npcs = game->npcs;
|
||||||
|
if (index < 0 || index >= static_cast<int>(npcs.size())) {
|
||||||
|
std::cerr << "[script] npc_set_position: index " << index << " out of range\n";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Eigen::Vector3f pos(x, y, z);
|
||||||
|
npcs[index]->position = pos;
|
||||||
|
npcs[index]->setTarget(pos);
|
||||||
|
});
|
||||||
|
|
||||||
|
// npc_set_rotation(index, angle) — sets NPC facing angle around Y axis (radians).
|
||||||
|
api.set_function("npc_set_rotation",
|
||||||
|
[game](int index, float angle) {
|
||||||
|
auto& npcs = game->npcs;
|
||||||
|
if (index < 0 || index >= static_cast<int>(npcs.size())) {
|
||||||
|
std::cerr << "[script] npc_set_rotation: index " << index << " out of range\n";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
npcs[index]->facingAngle = angle;
|
||||||
|
npcs[index]->targetFacingAngle = angle;
|
||||||
|
});
|
||||||
|
|
||||||
// set_npc_enabled(index, enabled)
|
// set_npc_enabled(index, enabled)
|
||||||
api.set_function("set_npc_enabled",
|
api.set_function("set_npc_enabled",
|
||||||
[game](int index, bool value) {
|
[game](int index, bool value) {
|
||||||
@ -263,6 +328,14 @@ namespace ZL {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
npcs[index]->enabled = value;
|
npcs[index]->enabled = value;
|
||||||
|
npcs[index]->attack = 0;
|
||||||
|
npcs[index]->attack_cooldown = 0;
|
||||||
|
npcs[index]->currentState = AnimationState::STAND;
|
||||||
|
if (npcs[index]->canAttack)
|
||||||
|
{
|
||||||
|
npcs[index]->attackTarget = game->player.get();
|
||||||
|
}
|
||||||
|
npcs[index]->battle_state = 0;
|
||||||
});
|
});
|
||||||
|
|
||||||
// move_object(name, x, y, z, duration_sec [, on_complete])
|
// move_object(name, x, y, z, duration_sec [, on_complete])
|
||||||
|
|||||||
@ -107,6 +107,9 @@ namespace ZL {
|
|||||||
// Snap to exact target
|
// Snap to exact target
|
||||||
position = task.targetPos;
|
position = task.targetPos;
|
||||||
rotationY = task.targetRotY;
|
rotationY = task.targetRotY;
|
||||||
|
if (task.type == AnimTask::Type::Fade)
|
||||||
|
alpha = task.targetScale; // targetScale reused to hold targetAlpha for Fade
|
||||||
|
else
|
||||||
scale = task.targetScale;
|
scale = task.targetScale;
|
||||||
|
|
||||||
std::function<void()> cb = std::move(task.onComplete);
|
std::function<void()> cb = std::move(task.onComplete);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user