Code edit (1 edits merged)
Please save this source code
User prompt
otra cosa cuando pierdo una y sigo teniendo tres vidas igual game over aunque tenga 2 vidas mas
User prompt
quiero que la dificultad se seleccione antes de jugar, quiero que las pregunta de cada dificultad se van incrementando dependiendo del nivel y que sean dificiles
User prompt
🏅 SISTEMA DE DIFICULTAD ESCALONADA Fácil (Luz de Aprendiz): conocimiento superficial, contenido jugado comúnmente. Media (Sabio del Núcleo): requiere experiencia jugando múltiples temporadas. Difícil (Archivo Negro): exige haber leído lore, conectado eventos entre temporadas. Extrema (Oscuridad Interior): conecta frases cifradas, símbolos, detalles no explicados directamente en el juego.
User prompt
hazlo con preguntas actualizadas al 02/7/2025
User prompt
cuando quiero seleccionar una respuesta no me deja le doy click y nada
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'wordWrap')' in or related to this line: 'self.questionText.style.wordWrap = true;' Line Number: 116
Code edit (1 edits merged)
Please save this source code
User prompt
El Archivo del Guardián
Initial prompt
🎮 Nombre del juego: “El Archivo del Guardián” Tagline: "El conocimiento es la luz que vence a la Oscuridad." 🕹️ Tipo de Juego Modo de juego: Trivia en solitario. Estilo: Por rondas con niveles de dificultad. Formato: Consola (CLI), Escritorio (GUI simple) o incluso archivo ejecutable .exe. ⚙️ Mecánica de Juego 🔹 Estructura básica El jugador responde a preguntas una por una. Hay varias categorías que escalan en dificultad: Historia General Armas y Armaduras Lore Profundo Actividades y Raids Preguntas tipo acertijo Cada ronda contiene entre 5 y 10 preguntas. Cada respuesta correcta suma puntos. Si fallas, puedes perder puntos o tener penalizaciones. 🔥 Modo "Desafío del Guardián" Este es el modo difícil diseñado para jugadores hardcore: Una sola vida: Si fallas una pregunta, terminas el juego. Sin pistas, sin tiempo visible. Las preguntas son encriptadas o indirectas. Ejemplo: “Mi voz se escuchó en las profundidades de la Luna, y fui testigo de la caída de Crota. ¿Quién soy?” Respuesta: Eris Morn 🧠 Tipos de Preguntas 1. Trivia clásica Opción múltiple, 4 respuestas. 2. Identificación por texto Pregunta sin opciones. Ejemplo: “¿Qué significa el nombre 'Xûr' en la lengua de los Nueve?” 3. Cifrado simbólico (modo avanzado) Usas símbolos de la colmena o vex (representados por texto en ASCII) que debes descifrar. Ejemplo: ⚙️ Código Vex: ΔΘψΣ Traducción: "Red" (pista a Red Legion o Redrix) 4. Lore de libro Basado en grimoire, registros o textos oficiales. Ejemplo: “¿Qué palabra susurró Savathûn al final de la Temporada de los Perdidos que alteró el curso del ritual?” 5. Perk Challenge Te dicen un perk y debes decir qué arma podía tenerlo en X temporada. “¿Qué arma legendaria introducida en la Temporada 17 podía tener el perk Incandescente?” 🧩 Estructura de dificultad Fase 1: Iniciado del Archivo Preguntas simples sobre personajes, armas conocidas y actividades básicas. Fase 2: Criptarca Errante Entra el lore más profundo, misiones exóticas específicas, eventos de temporada. Fase 3: Vidente Preguntas indirectas, con citas, frases oscuras, conexiones entre personajes y eventos. Fase 4: Archivo Prohibido Preguntas imposibles para los que no han leído grimoire o no siguieron temporadas específicas. 🏅 Sistema de Logros Rangos internos (guardados localmente, sin conexión): 0–20 pts: Portador de la Luz 21–50 pts: Discípulo de Osiris 51–75 pts: Devorador de Sabiduría 76–100 pts: Leyenda del Archivo Puedes desbloquear modos especiales si alcanzas ciertos puntajes: Modo Oscuridad: todas las preguntas se invierten lógicamente (deben deducirse con pistas falsas). Modo Cronómetro: 5 segundos por pregunta, sin volver atrás.
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1");
/****
* Classes
****/
var OptionButton = Container.expand(function () {
var self = Container.call(this);
var bg = self.attachAsset('optionButton', {
anchorX: 0.5,
anchorY: 0.5
});
self.optionText = new Text2('', {
size: 36,
fill: 0xFFFFFF
});
self.optionText.anchor.set(0.5, 0.5);
self.addChild(self.optionText);
self.correctIndicator = null;
self.wrongIndicator = null;
self.isCorrect = false;
self.index = 0;
self.setOption = function (text, index, isCorrect) {
self.optionText.setText(text);
self.index = index;
self.isCorrect = isCorrect;
};
self.showResult = function (correct) {
if (correct) {
self.correctIndicator = self.attachAsset('correctIndicator', {
anchorX: 0.5,
anchorY: 0.5,
alpha: 0.7
});
} else {
self.wrongIndicator = self.attachAsset('wrongIndicator', {
anchorX: 0.5,
anchorY: 0.5,
alpha: 0.7
});
}
};
self.down = function (x, y, obj) {
if (!game.canAnswer) return;
game.checkAnswer(self.index);
};
return self;
});
var ProgressDisplay = Container.expand(function () {
var self = Container.call(this);
var barBg = self.attachAsset('progressBar', {
anchorX: 0,
anchorY: 0.5
});
self.progressFill = self.attachAsset('progressFill', {
anchorX: 0,
anchorY: 0.5,
scaleX: 0
});
self.progressText = new Text2('Question 1/10', {
size: 32,
fill: 0xFFFFFF
});
self.progressText.anchor.set(0.5, 0.5);
self.progressText.x = 800;
self.progressText.y = -40;
self.addChild(self.progressText);
self.setProgress = function (current, total) {
self.progressText.setText('Question ' + current + '/' + total);
var progress = current / total;
tween(self.progressFill, {
scaleX: progress
}, {
duration: 500,
easing: tween.easeOut
});
};
return self;
});
var QuestionDisplay = Container.expand(function () {
var self = Container.call(this);
var bg = self.attachAsset('questionBg', {
anchorX: 0.5,
anchorY: 0.5
});
self.questionText = new Text2('', {
size: 48,
fill: 0xFFFFFF
});
self.questionText.anchor.set(0.5, 0.5);
self.addChild(self.questionText);
self.setQuestion = function (text) {
self.questionText.setText(text);
// Word wrap for long questions
self.questionText.wordWrap = true;
self.questionText.wordWrapWidth = 1600;
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x0a0a0f
});
/****
* Game Code
****/
// Game state variables
var currentPhase = 0; // 0: Initiate, 1: Cryptarch, 2: Seer, 3: Forbidden
var currentQuestion = 0;
var score = 0;
var lives = 3;
var questionsPerRound = 10;
var canAnswer = true;
var guardianMode = false;
var darknessMode = false;
var timerMode = false;
var timerCount = 0;
// UI Elements
var questionDisplay = null;
var optionButtons = [];
var progressDisplay = null;
var scoreText = null;
var phaseText = null;
var livesText = null;
var modeIndicator = null;
// Question Database
var questions = {
0: [
// Initiate
{
q: "What is the primary currency in the game?",
options: ["Glimmer", "Bright Dust", "Legendary Shards", "Silver"],
correct: 0
}, {
q: "How many character classes are there?",
options: ["2", "3", "4", "5"],
correct: 1
}, {
q: "What is the maximum light level cap?",
options: ["1000", "1500", "1810", "2000"],
correct: 2
}],
1: [
// Cryptarch
{
q: "Which exotic hand cannon fires solar rounds that explode?",
options: ["Thorn", "Ace of Spades", "Sunshot", "The Last Word"],
correct: 2
}, {
q: "What is the name of the Vanguard Titan?",
options: ["Zavala", "Ikora", "Cayde-6", "Shaxx"],
correct: 0
}],
2: [
// Seer
{
q: "In which expansion did the Darkness arrive?",
options: ["Forsaken", "Shadowkeep", "Beyond Light", "The Witch Queen"],
correct: 2
}, {
q: "What are the worm gods' names collectively known as?",
options: ["The Five", "The Hive Pantheon", "The Virtuous Worms", "The Formless One"],
correct: 1
}],
3: [
// Forbidden
{
q: "What is the true name of the Witness?",
options: ["Unknown", "The First Knife", "The Final Shape", "Nezarec"],
correct: 0
}, {
q: "Which paracausal force predates both Light and Darkness?",
options: ["The Veil", "The Traveler", "The Nine", "None exist"],
correct: 3
}]
};
var phaseNames = ["Archive Initiate", "Wandering Cryptarch", "Seer", "Forbidden Archive"];
var rankNames = ["Light Bearer", "Disciple of Osiris", "Wisdom Devourer", "Archive Legend"];
function initializeGame() {
// Question display
questionDisplay = game.addChild(new QuestionDisplay());
questionDisplay.x = 1024;
questionDisplay.y = 600;
// Option buttons
for (var i = 0; i < 4; i++) {
var button = game.addChild(new OptionButton());
button.x = 520 + i % 2 * 1000;
button.y = 1200 + Math.floor(i / 2) * 200;
optionButtons.push(button);
}
// Progress display
progressDisplay = game.addChild(new ProgressDisplay());
progressDisplay.x = 224;
progressDisplay.y = 2400;
// Score text
scoreText = new Text2('Score: 0', {
size: 64,
fill: 0xFFFFFF
});
scoreText.anchor.set(1, 0);
LK.gui.topRight.addChild(scoreText);
// Phase text
phaseText = new Text2(phaseNames[0], {
size: 48,
fill: 0x5EB3FF
});
phaseText.anchor.set(0.5, 0);
phaseText.y = 100;
LK.gui.top.addChild(phaseText);
// Lives text
livesText = new Text2('Lives: ❤❤❤', {
size: 40,
fill: 0xFF6B6B
});
livesText.anchor.set(0, 0);
livesText.x = 120;
LK.gui.topLeft.addChild(livesText);
// Load saved progress
score = storage.highScore || 0;
guardianMode = storage.guardianUnlocked || false;
darknessMode = storage.darknessUnlocked || false;
timerMode = storage.timerUnlocked || false;
// Start game
loadQuestion();
LK.playMusic('ambient');
}
function loadQuestion() {
canAnswer = true;
currentQuestion++;
if (currentQuestion > questionsPerRound) {
// Phase complete
if (currentPhase < 3) {
currentPhase++;
currentQuestion = 1;
LK.getSound('levelup').play();
phaseText.setText(phaseNames[currentPhase]);
tween(phaseText, {
scaleX: 1.5,
scaleY: 1.5
}, {
duration: 300,
easing: tween.easeOut,
onFinish: function onFinish() {
tween(phaseText, {
scaleX: 1,
scaleY: 1
}, {
duration: 300,
easing: tween.easeIn
});
}
});
} else {
// Game complete
checkAchievements();
return;
}
}
progressDisplay.setProgress(currentQuestion, questionsPerRound);
// Get random question from current phase
var phaseQuestions = questions[currentPhase];
var questionData = phaseQuestions[Math.floor(Math.random() * phaseQuestions.length)];
// Apply darkness mode
if (darknessMode) {
questionDisplay.setQuestion("NOT: " + questionData.q);
} else {
questionDisplay.setQuestion(questionData.q);
}
// Set options
for (var i = 0; i < 4; i++) {
optionButtons[i].setOption(questionData.options[i], i, i === questionData.correct);
}
// Timer mode
if (timerMode) {
timerCount = 300; // 5 seconds * 60 fps
}
}
function checkAnswer(selectedIndex) {
if (!canAnswer) return;
canAnswer = false;
var correct = optionButtons[selectedIndex].isCorrect;
// Darkness mode inverts correct answers
if (darknessMode) {
correct = !correct;
}
if (correct) {
LK.getSound('correct').play();
optionButtons[selectedIndex].showResult(true);
score += (currentPhase + 1) * 5;
scoreText.setText('Score: ' + score);
LK.setScore(score);
// Check for unlocks
if (score >= 30 && !guardianMode) {
guardianMode = true;
storage.guardianUnlocked = true;
LK.getSound('unlock').play();
showUnlockMessage("Guardian's Challenge Unlocked!");
}
if (score >= 50 && !darknessMode) {
darknessMode = true;
storage.darknessUnlocked = true;
LK.getSound('unlock').play();
showUnlockMessage("Darkness Mode Unlocked!");
}
if (score >= 70 && !timerMode) {
timerMode = true;
storage.timerUnlocked = true;
LK.getSound('unlock').play();
showUnlockMessage("Timer Mode Unlocked!");
}
} else {
LK.getSound('wrong').play();
optionButtons[selectedIndex].showResult(false);
lives--;
updateLives();
if (guardianMode || lives <= 0) {
LK.showGameOver();
return;
}
}
// Save high score
if (score > (storage.highScore || 0)) {
storage.highScore = score;
}
// Next question after delay
LK.setTimeout(function () {
// Clear indicators
for (var i = 0; i < 4; i++) {
if (optionButtons[i].correctIndicator) {
optionButtons[i].correctIndicator.destroy();
optionButtons[i].correctIndicator = null;
}
if (optionButtons[i].wrongIndicator) {
optionButtons[i].wrongIndicator.destroy();
optionButtons[i].wrongIndicator = null;
}
}
loadQuestion();
}, 1500);
}
function updateLives() {
var hearts = '';
for (var i = 0; i < lives; i++) {
hearts += '❤';
}
livesText.setText('Lives: ' + hearts);
}
function showUnlockMessage(message) {
var unlockText = new Text2(message, {
size: 72,
fill: 0xFFD700
});
unlockText.anchor.set(0.5, 0.5);
unlockText.x = 1024;
unlockText.y = 1366;
unlockText.alpha = 0;
game.addChild(unlockText);
tween(unlockText, {
alpha: 1,
scaleX: 1.2,
scaleY: 1.2
}, {
duration: 500,
easing: tween.easeOut,
onFinish: function onFinish() {
LK.setTimeout(function () {
tween(unlockText, {
alpha: 0
}, {
duration: 500,
onFinish: function onFinish() {
unlockText.destroy();
}
});
}, 2000);
}
});
}
function checkAchievements() {
var rank = 0;
if (score >= 21) rank = 1;
if (score >= 51) rank = 2;
if (score >= 76) rank = 3;
var achievementText = new Text2('Rank: ' + rankNames[rank], {
size: 96,
fill: 0xFFD700
});
achievementText.anchor.set(0.5, 0.5);
achievementText.x = 1024;
achievementText.y = 1366;
game.addChild(achievementText);
if (score >= 100) {
LK.showYouWin();
} else {
LK.setTimeout(function () {
LK.showGameOver();
}, 3000);
}
}
game.update = function () {
if (timerMode && timerCount > 0 && canAnswer) {
timerCount--;
if (timerCount <= 0) {
// Time's up - wrong answer
canAnswer = false;
lives--;
updateLives();
LK.getSound('wrong').play();
if (guardianMode || lives <= 0) {
LK.showGameOver();
} else {
LK.setTimeout(function () {
loadQuestion();
}, 1000);
}
}
}
};
// Initialize the game
initializeGame(); ===================================================================
--- original.js
+++ change.js
@@ -94,10 +94,10 @@
self.addChild(self.questionText);
self.setQuestion = function (text) {
self.questionText.setText(text);
// Word wrap for long questions
- self.questionText.style.wordWrap = true;
- self.questionText.style.wordWrapWidth = 1600;
+ self.questionText.wordWrap = true;
+ self.questionText.wordWrapWidth = 1600;
};
return self;
});