User prompt
Después del pantallazo rojo con el “Game Over” en la primera ruta de Aiko, el botón táctil “Reiniciar” aumenta de tamaño y se posiciona en el centro de la pantalla. Al mismo tiempo, el botón “Siguiente” desaparece por completo, obligando al jugador a reiniciar la partida desde el inicio.
User prompt
De esta manera va a continuar la ruta de Aiko: [Opción 1: Pedirle que sea mi tutora] [Opción 2: Sugerir estudiar juntos como amigos] --- Resultado Opción 1: Pedirle que sea mi tutora > (Fondo permanece: salón ordenado, pero con la cámara más cerca mostrando sólo a los dos personajes) Aiko: "...¿Yo? ¿Tu tutora?" (pausa breve) "Está bien. Pero no quiero distracciones. Si no cumplís, se acaba el trato." Satoshi (sonríe): "¡Lo prometo! Seré el alumno más aplicado que hayas visto." > (Texto en pantalla: +1 punto de progreso académico) (Botón “Siguiente” aparece para continuar con la ruta de Aiko.) --- Resultado Opción 2: Sugerir estudiar juntos como amigos > (Pantalla se congela de golpe. Aparece un pantallazo rojo con letras grandes en negro:) --- ❌ GAME OVER ¡Por eso eres virgen!
User prompt
Fix that.
User prompt
When selecting the "Seguir a Hikari" option to proceed to Route 3, the background doesn't update as it should. Please fix this so that a completely new background—one that hasn't been used before—is displayed. The new background should be called "aula2".
User prompt
When selecting the "Seguir a Hikari" option to proceed to Route 3, the background doesn't update as it should. Please fix this so that a completely new background—one that hasn't been used before—is displayed.
User prompt
When I refresh the website and the game finishes loading, I notice it starts behaving erratically. Please fix this issue. Also, make sure the game doesn't auto-save — it should always start from the beginning upon loading. ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
It seems there's a bug in the game that's applying a color filter to the 'characterSprite' image. Please fix it to prevent it from happening again.
User prompt
Fix the game’s bugs and move the restart touch button to the top-right corner.
User prompt
Please fix the bug: 'Uncaught TypeError: storage.remove is not a function' in or related to this line: 'storage.remove('currentScene');' Line Number: 438 ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'storage.currentScene = undefined;' Line Number: 438
User prompt
A touch button in the top-left corner takes the player back to the start of the game.
User prompt
The game has no save states or checkpoints. ↪💡 Consider importing and using the following plugins: @upit/storage.v1
Code edit (1 edits merged)
Please save this source code
User prompt
Corazón de Estudiante - Novela Visual
Initial prompt
Crea una novela visual en español. Tienes razón: actualizar el fondo junto con el avance del texto mejora enormemente la inmersión visual y evita que el jugador sienta que el juego es monótono. Vamos a integrar esos cambios y extender aún más el guión, asegurándonos de que cada cambio de escena tenga un fondo distinto para reforzar el dinamismo de la novela visual. --- 🎮 Novela visual – Guión mejorado con cambios de fondo --- [Escena 1 - Fondo: habitación de Satoshi por la mañana] > (Personaje al centro: Satoshi en pijama) Satoshi (narrando): "Hola. Me llamo Satoshi. Estudiante de secundaria. Sí... todavía virgen, pero no nos desviemos. Tengo una misión: conseguir una novia antes de graduarme. Si no lo logro... bueno, será un final trágico para mi adolescencia." > (Botón “Siguiente” aparece.) --- [Escena 2 - Fondo: habitación, mismo fondo. Personaje cambia: Mamá de Satoshi] > (Mamá aparece con expresión severa, correa enrollada en la mano) Mamá: "¡Parate ya o vas a llegar tarde! Y si eso pasa, prepárate para una buena reprimenda." > (Opciones táctiles aparecen) [Opción 1: “¡Mamá, dejame en paz!”] [Opción 2: “Sí, ya me levanté ^^”] --- Resultado Opción 1: > (Mini escena cómica: Mamá levanta la correa, efecto de golpe tipo anime. Texto en pantalla: “¡BAM!”) (Texto: -1 punto de respeto familiar) (Satoshi aparece con cara de sufrimiento cómico.) Mamá: "¡Hablarme así! ¡Con razón ni tu almohada te quiere!" --- Resultado Opción 2: > (Mini escena: Mamá sonriendo, acaricia la cabeza de Satoshi) (Texto: +1 punto de paz doméstica) Mamá: "¿Desde cuándo eres tan amable? Seguro aprendiste algo de tu hermano." --- > (Después de cualquiera de las opciones, botón “Siguiente” aparece.) --- [Escena 3 - Fondo: Calle del vecindario, mañana soleada] > (Satoshi en uniforme escolar, caminando) Satoshi (pensando): "Sobreviví a mamá. Eso ya es una victoria. Ahora empieza lo difícil... encontrar a alguien con quien pasar mis días de escuela. ¿Quién podría ser...?" --- [Escena 4 - Fondo: Entrada del instituto] > (Música ambiente escolar comienza. Suena la campana. Aparecen tres personajes uno por uno al centro de la pantalla, brevemente iluminados.) Satoshi (pensando): "La delegada estricta que me llama por mi apellido... La amiga de la infancia que aún guarda mi carta de primaria... O la chica nueva que siempre mira por la ventana..." --- > (Botón “Elegir ruta” aparece. Jugador puede seleccionar una entre tres rutas:) Ruta 1 – Aiko: la delegada estricta (Fondo: salón ordenado, pupitres alineados) Ruta 2 – Yui: la amiga de la infancia (Fondo: patio del colegio, árboles en flor) Ruta 3 – Hikari: la chica misteriosa (Fondo: aula al atardecer, iluminación suave)
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1"); /**** * Classes ****/ var Character = Container.expand(function () { var self = Container.call(this); var sprite = self.attachAsset('characterSprite', { anchorX: 0.5, anchorY: 1, x: 1024, y: 2000 }); self.show = function (color) { sprite.tint = color || 0xffffff; self.visible = true; }; self.hide = function () { self.visible = false; }; return self; }); var ChoiceSystem = Container.expand(function () { var self = Container.call(this); var choices = []; self.showChoices = function (choiceOptions) { self.clearChoices(); for (var i = 0; i < choiceOptions.length; i++) { var choice = choiceOptions[i]; var choiceBtn = self.attachAsset('choiceButton', { anchorX: 0.5, anchorY: 0.5, x: 1024, y: 1400 + i * 120 }); var choiceText = new Text2(choice.text, { size: 45, fill: 0xFFFFFF }); choiceText.anchor.set(0.5, 0.5); choiceText.x = choiceBtn.x; choiceText.y = choiceBtn.y; self.addChild(choiceText); choiceBtn.choiceData = choice; choiceBtn.down = function () { game.makeChoice(this.choiceData); }; choices.push({ btn: choiceBtn, text: choiceText }); } self.visible = true; }; self.clearChoices = function () { for (var i = 0; i < choices.length; i++) { choices[i].btn.destroy(); choices[i].text.destroy(); } choices = []; self.visible = false; }; return self; }); var DialogSystem = Container.expand(function () { var self = Container.call(this); // Dialog box var dialogBox = self.attachAsset('dialogBox', { anchorX: 0.5, anchorY: 1, x: 1024, y: 2732 - 50 }); // Name box var nameBox = self.attachAsset('nameBox', { anchorX: 0, anchorY: 1, x: 150, y: 2732 - 300 }); // Texts var nameText = new Text2('', { size: 40, fill: 0xFFFFFF }); nameText.anchor.set(0.5, 0.5); nameText.x = nameBox.x + 150; nameText.y = nameBox.y - 30; self.addChild(nameText); var dialogText = new Text2('', { size: 50, fill: 0xFFFFFF }); dialogText.anchor.set(0, 0); dialogText.x = dialogBox.x - 850; dialogText.y = dialogBox.y - 200; self.addChild(dialogText); // Next button var nextBtn = self.attachAsset('nextButton', { anchorX: 0.5, anchorY: 0.5, x: 1800, y: 2732 - 100 }); var nextText = new Text2('Siguiente', { size: 35, fill: 0xFFFFFF }); nextText.anchor.set(0.5, 0.5); nextText.x = nextBtn.x; nextText.y = nextBtn.y; self.addChild(nextText); self.showDialog = function (speaker, text) { nameText.setText(speaker); dialogText.setText(text); self.visible = true; }; self.hide = function () { self.visible = false; }; nextBtn.down = function () { if (game.currentChoices.length > 0) { game.showChoices(); } else { game.nextDialog(); } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x2c3e50 }); /**** * Game Code ****/ // Fondos // Game state var currentScene = 0; var currentDialog = 0; var currentChoices = []; var relationshipPoints = { aiko: 0, yui: 0, hikari: 0, respect: 0, peace: 0 }; var selectedRoute = null; var currentBackground = null; // Load saved data if (storage.relationshipPoints) { relationshipPoints = storage.relationshipPoints; } if (storage.selectedRoute) { selectedRoute = storage.selectedRoute; } if (storage.currentScene) { currentScene = storage.currentScene; } // UI Systems var dialogSystem = game.addChild(new DialogSystem()); var choiceSystem = game.addChild(new ChoiceSystem()); var character = game.addChild(new Character()); // Story data var storyScenes = [{ background: 'habitacion', dialogs: [{ speaker: 'Satoshi', text: '¡Ya es mi último año de secundaria! Necesito encontrar novia antes de graduarme.' }, { speaker: 'Satoshi', text: 'Pero primero... mejor hablo con mamá sobre mis planes.' }], choices: [{ text: 'Contarle todo a mamá', effects: { respect: 2, peace: -1 } }, { text: 'Mantenerlo en secreto', effects: { peace: 2, respect: -1 } }] }, { background: 'calle', dialogs: [{ speaker: 'Satoshi', text: 'Camino a la escuela... Hoy conoceré a las chicas que podrían cambiar mi vida.' }] }, { background: 'escuela', dialogs: [{ speaker: 'Satoshi', text: 'Aquí está la escuela. Veo tres chicas que me llaman la atención...' }, { speaker: 'Satoshi', text: 'Aiko, la delegada seria... Yui, mi amiga de la infancia... y Hikari, la misteriosa.' }], choices: [{ text: 'Acercarme a Aiko', route: 'aiko' }, { text: 'Hablar con Yui', route: 'yui' }, { text: 'Seguir a Hikari', route: 'hikari' }] }]; // Route-specific scenes var routeScenes = { aiko: [{ background: 'aula', dialogs: [{ speaker: 'Aiko', text: 'Satoshi-kun, necesitas ser más responsable con tus estudios.' }, { speaker: 'Satoshi', text: 'Tienes razón, Aiko. ¿Me ayudarías a estudiar?' }], choices: [{ text: 'Pedirle que sea mi tutora', effects: { aiko: 3 } }, { text: 'Sugerir estudiar juntos como amigos', effects: { aiko: 1 } }] }], yui: [{ background: 'patio', dialogs: [{ speaker: 'Yui', text: '¡Satoshi! Como en los viejos tiempos, ¿verdad?' }, { speaker: 'Satoshi', text: 'Sí, Yui... pero ahora te veo diferente.' }], choices: [{ text: 'Confesarle mis sentimientos', effects: { yui: 3 } }, { text: 'Mantener la amistad por ahora', effects: { yui: 1 } }] }], hikari: [{ background: 'calle', dialogs: [{ speaker: 'Hikari', text: 'Te has dado cuenta de mí... interesante.' }, { speaker: 'Satoshi', text: 'Hay algo especial en ti, Hikari.' }], choices: [{ text: 'Preguntarle sobre su misterio', effects: { hikari: 3 } }, { text: 'Invitarla a caminar', effects: { hikari: 2 } }] }] }; function changeBackground(backgroundType) { if (currentBackground) { currentBackground.destroy(); } currentBackground = game.addChild(LK.getAsset(backgroundType, { x: 0, y: 0 })); // Send background to back game.setChildIndex(currentBackground, 0); } function showCurrentDialog() { var scene = getCurrentScene(); if (!scene || !scene.dialogs || currentDialog >= scene.dialogs.length) { if (scene && scene.choices) { currentChoices = scene.choices; choiceSystem.showChoices(scene.choices); dialogSystem.hide(); } else { nextScene(); } return; } var dialog = scene.dialogs[currentDialog]; dialogSystem.showDialog(dialog.speaker, dialog.text); // Show character for non-Satoshi speakers if (dialog.speaker !== 'Satoshi') { var colors = { 'Aiko': 0x3498db, 'Yui': 0xe91e63, 'Hikari': 0x9c27b0 }; character.show(colors[dialog.speaker] || 0xffffff); } else { character.hide(); } choiceSystem.clearChoices(); } function getCurrentScene() { if (selectedRoute && routeScenes[selectedRoute]) { var routeIndex = currentScene - storyScenes.length; if (routeIndex >= 0 && routeIndex < routeScenes[selectedRoute].length) { return routeScenes[selectedRoute][routeIndex]; } } if (currentScene < storyScenes.length) { return storyScenes[currentScene]; } return null; } function nextScene() { currentScene++; currentDialog = 0; currentChoices = []; // Save progress storage.currentScene = currentScene; storage.relationshipPoints = relationshipPoints; storage.selectedRoute = selectedRoute; var scene = getCurrentScene(); if (scene) { if (scene.background) { changeBackground(scene.background); } showCurrentDialog(); } else { showEnding(); } } function showEnding() { var maxPoints = 0; var winner = null; if (selectedRoute) { maxPoints = relationshipPoints[selectedRoute]; winner = selectedRoute; } var endingText = ''; if (maxPoints >= 3) { endingText = '¡Felicidades! Has encontrado el amor verdadero con ' + (winner === 'aiko' ? 'Aiko' : winner === 'yui' ? 'Yui' : 'Hikari') + '!'; LK.showYouWin(); } else { endingText = 'Aunque no encontraste el amor esta vez, aprendiste mucho sobre ti mismo.'; dialogSystem.showDialog('Narrador', endingText); } } game.nextDialog = function () { currentDialog++; showCurrentDialog(); }; game.makeChoice = function (choice) { if (choice.effects) { for (var key in choice.effects) { relationshipPoints[key] += choice.effects[key]; } } if (choice.route) { selectedRoute = choice.route; storage.selectedRoute = selectedRoute; } choiceSystem.clearChoices(); currentChoices = []; nextScene(); }; game.showChoices = function () { if (currentChoices.length > 0) { choiceSystem.showChoices(currentChoices); dialogSystem.hide(); } }; // Initialize game changeBackground('habitacion'); showCurrentDialog(); // Add game state to global for debugging game.currentChoices = currentChoices;
===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,400 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+var storage = LK.import("@upit/storage.v1");
+
+/****
+* Classes
+****/
+var Character = Container.expand(function () {
+ var self = Container.call(this);
+ var sprite = self.attachAsset('characterSprite', {
+ anchorX: 0.5,
+ anchorY: 1,
+ x: 1024,
+ y: 2000
+ });
+ self.show = function (color) {
+ sprite.tint = color || 0xffffff;
+ self.visible = true;
+ };
+ self.hide = function () {
+ self.visible = false;
+ };
+ return self;
+});
+var ChoiceSystem = Container.expand(function () {
+ var self = Container.call(this);
+ var choices = [];
+ self.showChoices = function (choiceOptions) {
+ self.clearChoices();
+ for (var i = 0; i < choiceOptions.length; i++) {
+ var choice = choiceOptions[i];
+ var choiceBtn = self.attachAsset('choiceButton', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 1024,
+ y: 1400 + i * 120
+ });
+ var choiceText = new Text2(choice.text, {
+ size: 45,
+ fill: 0xFFFFFF
+ });
+ choiceText.anchor.set(0.5, 0.5);
+ choiceText.x = choiceBtn.x;
+ choiceText.y = choiceBtn.y;
+ self.addChild(choiceText);
+ choiceBtn.choiceData = choice;
+ choiceBtn.down = function () {
+ game.makeChoice(this.choiceData);
+ };
+ choices.push({
+ btn: choiceBtn,
+ text: choiceText
+ });
+ }
+ self.visible = true;
+ };
+ self.clearChoices = function () {
+ for (var i = 0; i < choices.length; i++) {
+ choices[i].btn.destroy();
+ choices[i].text.destroy();
+ }
+ choices = [];
+ self.visible = false;
+ };
+ return self;
+});
+var DialogSystem = Container.expand(function () {
+ var self = Container.call(this);
+ // Dialog box
+ var dialogBox = self.attachAsset('dialogBox', {
+ anchorX: 0.5,
+ anchorY: 1,
+ x: 1024,
+ y: 2732 - 50
+ });
+ // Name box
+ var nameBox = self.attachAsset('nameBox', {
+ anchorX: 0,
+ anchorY: 1,
+ x: 150,
+ y: 2732 - 300
+ });
+ // Texts
+ var nameText = new Text2('', {
+ size: 40,
+ fill: 0xFFFFFF
+ });
+ nameText.anchor.set(0.5, 0.5);
+ nameText.x = nameBox.x + 150;
+ nameText.y = nameBox.y - 30;
+ self.addChild(nameText);
+ var dialogText = new Text2('', {
+ size: 50,
+ fill: 0xFFFFFF
+ });
+ dialogText.anchor.set(0, 0);
+ dialogText.x = dialogBox.x - 850;
+ dialogText.y = dialogBox.y - 200;
+ self.addChild(dialogText);
+ // Next button
+ var nextBtn = self.attachAsset('nextButton', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 1800,
+ y: 2732 - 100
+ });
+ var nextText = new Text2('Siguiente', {
+ size: 35,
+ fill: 0xFFFFFF
+ });
+ nextText.anchor.set(0.5, 0.5);
+ nextText.x = nextBtn.x;
+ nextText.y = nextBtn.y;
+ self.addChild(nextText);
+ self.showDialog = function (speaker, text) {
+ nameText.setText(speaker);
+ dialogText.setText(text);
+ self.visible = true;
+ };
+ self.hide = function () {
+ self.visible = false;
+ };
+ nextBtn.down = function () {
+ if (game.currentChoices.length > 0) {
+ game.showChoices();
+ } else {
+ game.nextDialog();
+ }
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x2c3e50
+});
+
+/****
+* Game Code
+****/
+// Fondos
+// Game state
+var currentScene = 0;
+var currentDialog = 0;
+var currentChoices = [];
+var relationshipPoints = {
+ aiko: 0,
+ yui: 0,
+ hikari: 0,
+ respect: 0,
+ peace: 0
+};
+var selectedRoute = null;
+var currentBackground = null;
+// Load saved data
+if (storage.relationshipPoints) {
+ relationshipPoints = storage.relationshipPoints;
+}
+if (storage.selectedRoute) {
+ selectedRoute = storage.selectedRoute;
+}
+if (storage.currentScene) {
+ currentScene = storage.currentScene;
+}
+// UI Systems
+var dialogSystem = game.addChild(new DialogSystem());
+var choiceSystem = game.addChild(new ChoiceSystem());
+var character = game.addChild(new Character());
+// Story data
+var storyScenes = [{
+ background: 'habitacion',
+ dialogs: [{
+ speaker: 'Satoshi',
+ text: '¡Ya es mi último año de secundaria! Necesito encontrar novia antes de graduarme.'
+ }, {
+ speaker: 'Satoshi',
+ text: 'Pero primero... mejor hablo con mamá sobre mis planes.'
+ }],
+ choices: [{
+ text: 'Contarle todo a mamá',
+ effects: {
+ respect: 2,
+ peace: -1
+ }
+ }, {
+ text: 'Mantenerlo en secreto',
+ effects: {
+ peace: 2,
+ respect: -1
+ }
+ }]
+}, {
+ background: 'calle',
+ dialogs: [{
+ speaker: 'Satoshi',
+ text: 'Camino a la escuela... Hoy conoceré a las chicas que podrían cambiar mi vida.'
+ }]
+}, {
+ background: 'escuela',
+ dialogs: [{
+ speaker: 'Satoshi',
+ text: 'Aquí está la escuela. Veo tres chicas que me llaman la atención...'
+ }, {
+ speaker: 'Satoshi',
+ text: 'Aiko, la delegada seria... Yui, mi amiga de la infancia... y Hikari, la misteriosa.'
+ }],
+ choices: [{
+ text: 'Acercarme a Aiko',
+ route: 'aiko'
+ }, {
+ text: 'Hablar con Yui',
+ route: 'yui'
+ }, {
+ text: 'Seguir a Hikari',
+ route: 'hikari'
+ }]
+}];
+// Route-specific scenes
+var routeScenes = {
+ aiko: [{
+ background: 'aula',
+ dialogs: [{
+ speaker: 'Aiko',
+ text: 'Satoshi-kun, necesitas ser más responsable con tus estudios.'
+ }, {
+ speaker: 'Satoshi',
+ text: 'Tienes razón, Aiko. ¿Me ayudarías a estudiar?'
+ }],
+ choices: [{
+ text: 'Pedirle que sea mi tutora',
+ effects: {
+ aiko: 3
+ }
+ }, {
+ text: 'Sugerir estudiar juntos como amigos',
+ effects: {
+ aiko: 1
+ }
+ }]
+ }],
+ yui: [{
+ background: 'patio',
+ dialogs: [{
+ speaker: 'Yui',
+ text: '¡Satoshi! Como en los viejos tiempos, ¿verdad?'
+ }, {
+ speaker: 'Satoshi',
+ text: 'Sí, Yui... pero ahora te veo diferente.'
+ }],
+ choices: [{
+ text: 'Confesarle mis sentimientos',
+ effects: {
+ yui: 3
+ }
+ }, {
+ text: 'Mantener la amistad por ahora',
+ effects: {
+ yui: 1
+ }
+ }]
+ }],
+ hikari: [{
+ background: 'calle',
+ dialogs: [{
+ speaker: 'Hikari',
+ text: 'Te has dado cuenta de mí... interesante.'
+ }, {
+ speaker: 'Satoshi',
+ text: 'Hay algo especial en ti, Hikari.'
+ }],
+ choices: [{
+ text: 'Preguntarle sobre su misterio',
+ effects: {
+ hikari: 3
+ }
+ }, {
+ text: 'Invitarla a caminar',
+ effects: {
+ hikari: 2
+ }
+ }]
+ }]
+};
+function changeBackground(backgroundType) {
+ if (currentBackground) {
+ currentBackground.destroy();
+ }
+ currentBackground = game.addChild(LK.getAsset(backgroundType, {
+ x: 0,
+ y: 0
+ }));
+ // Send background to back
+ game.setChildIndex(currentBackground, 0);
+}
+function showCurrentDialog() {
+ var scene = getCurrentScene();
+ if (!scene || !scene.dialogs || currentDialog >= scene.dialogs.length) {
+ if (scene && scene.choices) {
+ currentChoices = scene.choices;
+ choiceSystem.showChoices(scene.choices);
+ dialogSystem.hide();
+ } else {
+ nextScene();
+ }
+ return;
+ }
+ var dialog = scene.dialogs[currentDialog];
+ dialogSystem.showDialog(dialog.speaker, dialog.text);
+ // Show character for non-Satoshi speakers
+ if (dialog.speaker !== 'Satoshi') {
+ var colors = {
+ 'Aiko': 0x3498db,
+ 'Yui': 0xe91e63,
+ 'Hikari': 0x9c27b0
+ };
+ character.show(colors[dialog.speaker] || 0xffffff);
+ } else {
+ character.hide();
+ }
+ choiceSystem.clearChoices();
+}
+function getCurrentScene() {
+ if (selectedRoute && routeScenes[selectedRoute]) {
+ var routeIndex = currentScene - storyScenes.length;
+ if (routeIndex >= 0 && routeIndex < routeScenes[selectedRoute].length) {
+ return routeScenes[selectedRoute][routeIndex];
+ }
+ }
+ if (currentScene < storyScenes.length) {
+ return storyScenes[currentScene];
+ }
+ return null;
+}
+function nextScene() {
+ currentScene++;
+ currentDialog = 0;
+ currentChoices = [];
+ // Save progress
+ storage.currentScene = currentScene;
+ storage.relationshipPoints = relationshipPoints;
+ storage.selectedRoute = selectedRoute;
+ var scene = getCurrentScene();
+ if (scene) {
+ if (scene.background) {
+ changeBackground(scene.background);
+ }
+ showCurrentDialog();
+ } else {
+ showEnding();
+ }
+}
+function showEnding() {
+ var maxPoints = 0;
+ var winner = null;
+ if (selectedRoute) {
+ maxPoints = relationshipPoints[selectedRoute];
+ winner = selectedRoute;
+ }
+ var endingText = '';
+ if (maxPoints >= 3) {
+ endingText = '¡Felicidades! Has encontrado el amor verdadero con ' + (winner === 'aiko' ? 'Aiko' : winner === 'yui' ? 'Yui' : 'Hikari') + '!';
+ LK.showYouWin();
+ } else {
+ endingText = 'Aunque no encontraste el amor esta vez, aprendiste mucho sobre ti mismo.';
+ dialogSystem.showDialog('Narrador', endingText);
+ }
+}
+game.nextDialog = function () {
+ currentDialog++;
+ showCurrentDialog();
+};
+game.makeChoice = function (choice) {
+ if (choice.effects) {
+ for (var key in choice.effects) {
+ relationshipPoints[key] += choice.effects[key];
+ }
+ }
+ if (choice.route) {
+ selectedRoute = choice.route;
+ storage.selectedRoute = selectedRoute;
+ }
+ choiceSystem.clearChoices();
+ currentChoices = [];
+ nextScene();
+};
+game.showChoices = function () {
+ if (currentChoices.length > 0) {
+ choiceSystem.showChoices(currentChoices);
+ dialogSystem.hide();
+ }
+};
+// Initialize game
+changeBackground('habitacion');
+showCurrentDialog();
+// Add game state to global for debugging
+game.currentChoices = currentChoices;
\ No newline at end of file
A cute 15-year-old red-haired boy with intense red eyes, wearing a traditional Japanese school uniform (gakuran). He's running down the street with a serious and confident expression. Despite his determined look, his appearance remains sweet and endearing. His gaze is focused straight ahead, with the wind gently lifting his hair and school jacket. The scene is illustrated in Pixel Art style.. In-Game asset. 2d. High contrast. No shadows
A cute 15-year-old red-haired boy with red eyes, wearing a traditional Japanese school uniform (gakuran). He has a big closed-mouth smile, shining eyes, and clenched fists held forward, as if encouraging himself. Behind him, other Japanese students can be seen. The scene is illustrated in Pixel Art style.. In-Game asset. 2d. High contrast. No shadows
A cute anime-style girl in pixel art, with an emo aesthetic and striking purple eyes. She wears a classic Japanese school uniform (sailor fuku) and is often shown with a slightly grumpy expression, reflecting a bit of a tsundere personality. She stands confidently with her hands on her hips and a slight tilt to her posture. Behind her is a typical Japanese classroom, enhancing the school-themed atmosphere.. In-Game asset. 2d. High contrast. No shadows
She’s a cute anime girl with a free-spirited and rebellious vibe. Her hair is pink, and she’s wearing a traditional Japanese school uniform (sailor fuku). She sports dark sunglasses and holds a skateboard in one hand while pointing with the other. Her face lights up with a big smile and mischievous pink eyes that match her hair. In the background, there's a Japanese classroom, and the entire artwork is done in Pixel Art style.. In-Game asset. 2d. High contrast. No shadows
Stella is a sweet and very kawaii 15-year-old anime girl with short, soft blue-gray hair (HEX: #b0b9d8) and black eyes. She wears a traditional Japanese school uniform called a sailor fuku. Stella is extremely shy—she blushes easily, avoids eye contact, and often covers herself when she feels nervous. In this Pixel Art scene, she’s gently touching the tips of her index fingers together, a classic gesture of shyness seen in anime. Behind her is the courtyard of a Japanese middle school, completing the charming school setting.. In-Game asset. 2d. High contrast. No shadows
A kawaii anime boy with intense red eyes, each containing shining stars. He raises his fist forward with determination, wearing a wide, open smile full of enthusiasm. Sparkles and glimmers float around him, symbolizing hope. The entire scene is rendered in Pixel Art style.
A kawaii anime boy with red eyes and a serious expression stands with his eyes closed, resting a hand under his chin in a thoughtful pose. He’s wearing a traditional Japanese school uniform called a gakuran. Suddenly, a lightbulb appears above his head—the classic symbol of a brilliant idea. He opens his eyes with determination, a confident smile forming on his face. It's Pixel Art.
Remove the sparkles from the background.
Pure white. 2d
A cute anime-style girl in pixel art, with an emo aesthetic, striking purple eyes, and a classic Japanese school uniform (sailor fuku), is studying with furrowed brows and a confident smile. She sits next to a shy red-haired boy with red eyes, also in pixel art style. Their desks are pushed together, and on the boy’s desk lies an open notebook, which he nervously stares at while holding a graphite pencil. The girl looks at him with a mix of sternness and confidence, convinced he won’t pass the exam. The background depicts a typical Japanese classroom.
A cute anime-style girl rendered in pixel art, with an emo aesthetic and striking purple eyes, is wearing a high school cheerleader uniform and holding pom-poms in both hands. With her arms and legs extended in a dynamic pose, she winks playfully while cheering. The background is an American football field.
A cute anime-style girl depicted in pixel art, with an emo aesthetic and striking purple eyes. She's wearing a classic Japanese school uniform (sailor fuku). She has a shy expression, with blushing cheeks and an averted gaze. Her left hand is playing with her hair, while her right hand rests on her chest. In the background, there's a typical anime-style classroom.
In pixel art style, a cute anime-style girl with an emo aesthetic, striking purple eyes, and a Japanese school uniform (sailor fuku) suddenly pulls the hand of a shy red-haired boy with red eyes, who is wearing a gakuran and sitting in front of a rectangular desk. She smiles brightly with her eyes closed as she yanks him toward her, pulling him out of his seat. The boy looks confused and nervous, flustered by the sudden physical contact. In the background, a typical Japanese classroom can be seen.
The camera focuses only on their hands. The girl, wearing a traditional Japanese sailor fuku uniform, firmly grabs the hand of the boy, who is dressed in a classic gakuran. She pulls him forward with energy and excitement. His hand follows with slight tension, expressing surprise. Nothing else is shown—just the gesture: a meaningful connection captured in the simple act of their hands intertwined. Behind them stretches a Japanese school hallway, all rendered in a charming Pixel Art style.
A cute anime-style girl with an emo aesthetic, striking purple eyes, and dressed in a traditional Japanese school uniform (sailor fuku), suddenly gives an unexpected kiss on the lips to a sweet red-haired boy with deep crimson eyes, wearing a classic gakuran school uniform. As she kisses him, her cheeks are deeply flushed, while he, also blushing, wears a look of shock and disbelief — not only was the kiss completely unprompted, but it’s also the very first time anyone has ever kissed him. Behind them stretches a Japanese school hallway, all rendered in a charming Pixel Art style.
A charming anime-style girl rendered in delightful Pixel Art, featuring an emo aesthetic, striking purple eyes, and a classic Japanese school uniform (sailor fuku). She confidently strikes the iconic “Ojou-sama pose”: Her left hand is elegantly lifted near her face, fingers gracefully splayed like a fan, perfectly framing her smug expression. Her face bears a tilted, self-assured smile, the kind that practically echoes a soft, aristocratic “Ohoho~” laugh. One eyebrow arches subtly, radiating playful confidence and a touch of superiority. Her right hand rests casually near her waist, loosely clenched into a relaxed fist — an anchor for her graceful yet dominant posture. Behind her stretches the polished hallway of a Japanese school, complete with sliding doors and sunlit windows, completing the scene with a nostalgic, everyday charm — all captured in the cozy, detailed charm of Pixel Art.
A cute gray chibi-style anime kitten, dressed in an astronaut suit and drifting through the universe, rendered in Pixel Art.
A cute gray kitten, drawn in an adorable chibi anime style and wearing an astronaut suit, floats in outer space with its little paws outstretched as if reaching out for a hug. It meows sweetly, and the entire scene is illustrated in charming Pixel Art style.
A cute chibi-style anime kitten, dressed in an astronaut suit and drifting through the universe, rendered in Pixel Art.
White star of the universe in Pixel Art style
Planet Earth of the universe in Pixel Art style
Create a title screen logo with the following text: "Corazón de Estudiante - Novela Visual" Behind the text, the Andromeda Galaxy (M31) stretches across the background, creating a dreamy, cosmic atmosphere that evokes mystery and romance.
A cute kitten, illustrated in an adorable chibi anime style and wearing an astronaut suit, is playfully tangled in a ball of yarn, floating through space with overwhelming joy. Its eyes are shut tight in pure happiness, and its movements are full of energetic delight.
Three-quarter view pixel art jetpack
Transparent, colorless glass button that says "Empezar" (Spanish for "Start"), featuring an adventure video game font and Pixel Art style.
Advertencia que dice: "Sin usar"
A realistic yellow star from the universe, in pixel art style.
Pure white
A cute, red-haired anime boy, 15 years old, with red eyes. He's in pajamas, looking sleepy, rubbing one eye with his hand. He's in his otaku-style bedroom. The scene is illustrated in Pixel Art style.
Blue button with two yellow chevrons in a row, pixel art style.
A green circular button featuring a fuchsia-colored refresh icon, designed in Pixel Art style.
Stella is a 15-year-old anime girl—sweet and incredibly kawaii—with short, soft hair in a bluish-gray tone (HEX: #b0b9d8) and deep black eyes. She wears a traditional Japanese school uniform, the classic sailor-style fuku. In her right hand, she holds a butcher knife. Her expression is serious, and her eyes, now glowing with an intense yandere red, reflect jealousy and obsession. Dark under-eye circles emphasize her unsettling gaze. She is inside a high school locker in a Japanese school. Her right hand is slightly raised, gripping the knife, while her left hand gently touches the blade with her index finger, mimicking the motion of a clock hand—adding to the eerie atmosphere. To emphasize the feeling of being inside the locker, soft light shines through the ventilation slits, casting dramatic shadows across her face. The entire scene is rendered in detailed Pixel Art style, enhancing both the cuteness and the unsettling atmosphere of the character and setting.
Yui y un niño anime, ambos de 5 o 6 años, corren por un parque soleado en una carrera infantil. Yui tiene el cabello corto, suave, azul grisáceo (HEX: #b0b9d8) y ojos negros. Lleva un vestido lavanda claro con volantes blancos y zapatillas blancas con detalles rosa pastel. Sonríe tímidamente con mejillas sonrojadas mientras corre con pasos pequeños. El niño tiene cabello pelirrojo alborotado y ojos rojos intensos. Lleva una camiseta amarilla brillante con una estrella blanca, pantalones cortos azul claro y zapatillas rojas. Corre con energía, sonriendo ampliamente, mirando a Yui con entusiasmo. La escena está en Pixel Art, con césped verde, árboles y pétalos flotando. Ambos se ven felices, reflejando un momento puro de infancia.
Yui is a cute 15-year-old anime girl with big black eyes and short, soft blue-gray hair (HEX: #b0b9d8). She wears a traditional Japanese school uniform called a sailor fuku. In this Pixel Art scene, Yui looks clearly upset—she has very noticeable dark circles under her eyes, her eyebrows are tense, and her teeth are pressed together in frustration. Her arms are relaxed and down at her sides, showing no physical aggression, just quiet tension. She’s inside a school locker, looking out through a metal grate with a serious, focused expression. The entire scene is viewed from inside the locker, with soft light coming through the vents, casting gentle shadows across her face and creating a slightly tense but family-friendly atmosphere.
Pixel art. A red-haired 15-year-old anime-style boy with red eyes and a girl with purple eyes in Japanese school uniforms, both with large, expressive eyes and oversized irises to look super kawaii, are talking cheerfully while looking into each other’s eyes and gesturing with their hands. They are standing very close to a row of school lockers. In the center locker, a pair of glowing red eyes peer through the slats. The eyes belong to a hidden yandere—obsessed, crazy, and jealous—whose face and body remain completely obscured in the darkness inside the locker. The mood is lighthearted between the boy and girl, contrasting with the eerie presence watching them from the shadows.
Stella, a 15-year-old anime girl with short, soft hair in a bluish-gray tone (HEX: #b0b9d8), and large black eyes with oversized irises (super kawaii style), glowing with intense yandere red. She wears a traditional Japanese school uniform (classic sailor fuku). She is inside a Japanese school locker, with soft light coming through the ventilation slits, casting dramatic shadows on her face. Her eyebrows are furrowed in extreme anger, but she has a wide, creepy smile, like someone completely insane. Dark under-eye circles highlight her unhinged expression. Her right hand holds a butcher knife slightly raised, while her left hand gently touches the blade with her index finger, mimicking a clock hand motion. Visual style: highly detailed Pixel Art.
Yui is a cute 15-year-old anime girl with big black eyes and short, soft blue-gray hair (HEX: #b0b9d8). She wears a traditional Japanese school uniform called a sailor fuku. In this Pixel Art scene, Yui is clearly devastated—she’s hunched over in a slouched, defeated posture, crying intensely. Many visible tears stream down her cheeks, slipping past her fingers as she covers her face with both hands. Her entire body language screams sadness; it’s raw, heavy, and impossible to ignore. She’s inside a school locker, and although she’s looking outward through the metal grate, her face is mostly hidden behind her trembling hands. The entire scene is viewed from inside the locker, with soft light coming through the vents, casting delicate shadows across her curled-up figure and highlighting the depth of her heartbreak. The atmosphere is heavy, emotional, and quietly heartbreaking—yet still family-friendly in tone.
Diseña exclusivamente un cuadro de diálogo de color blanco de 2048 x 684 píxeles y esquinas en ángulo recto, evocando la estética romántica y juvenil de una novela ligera escolar, todo en estilo pixel art. No debe incluir ninguna otra funcionalidad. Detrás hay un fondo de color verde croma.
Ilustración en Pixel Art de un Name Box blanco, característico de una novela visual romántica, con detalles en colores pastel. El cuadro no contiene texto.
Ilustración en Pixel Art de un Name Box blanco, característico de una novela visual romántica, con detalles en colores pastel. El cuadro no contiene texto.
LoveTime
Music
Music1
Music
titleScreenSong
Music
theBeginningSong
Music
theCrossroadsSong
Music
theSchoolSong
Music
romanticSong
Music
youWinSong
Music
gameOverSong
Music
gameOverEffect
Sound effect
evaluationSong
Music
aikoAudioLine2
Sound effect
aikoAudioLine1
Sound effect
aikoAudioLine3
Sound effect
aikoAudioLine4
Sound effect
aikoAudioLine5
Sound effect
audioAikoLine6
Sound effect
aikoAudioLine7
Sound effect
aikoAudioLine8
Sound effect
Kissonthecheek
Sound effect
aikoAudioLine9
Sound effect
aikoAudioLine10
Sound effect
yuiAudioLine1
Sound effect
yuiAudioLine2
Sound effect
yuiAudioLine3
Sound effect
yuiAudioLine4
Sound effect
yuiAudioLine5
Sound effect
yuiAudioLine6
Sound effect
yuiAudioLine7
Sound effect
yandereSong
Music