User prompt
Ajoute une mécanique de défense/protection pour le bébé dragon , quand le joueur appuie sur le boutton défendre, l'attaque du dragon adulte ennemis ne fait rien au bébé dragon, mais le joueur ne peut utiliser cette protection seulement 5 fois par niveau de joueur ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Ajoute un système d'épée : certains dragons adultes (Mistina et Ultete) peuvent utiliser une épée en pleins combats, pour diminuer le nombre de points de vie maximum du bébé dragon. Il y a 45 % de chance a chaque rencontre avec Mistina ou Ultete qu'ils utilisent une épée, quand ils l'utilisent, le bébé dragon pert 30 % de ses points de vies maximum (son nombre de points de vies maximum est baisse) ↪💡 Consider importing and using the following plugins: @upit/storage.v1, @upit/tween.v1
User prompt
Fait en sorte que le bébé dragon du joueur et les dragons adultes est leurs points de vies qui augmentent , voici tout ce que je veut : 1) Nilisty Éléments/pouvoirs : - ombre - feu -> les dragons Nilisty sont aléatoirement entre 25 et 100 points de vie quand le joueur est niveau 1, Mais leurs nombres de points de vies augmentent de 36 points de vie tout les niveaux de joueurs -> si le joueur a vaincu un dragon Nilisty, Son bébé dragon gagne 20% des points de vies du Nilisty en points de vies maximum 2) Mistina Éléments/pouvoirs : - lumière - végétal -> les dragons Mistina possèdent aléatoirement entre 30 et 110 points de vies quand le joueur est niveau 1, mais leur nombre de points de vie augmentent de 40 points de vies à chaque nouveau niveau du joueur, et Mistina est capable de se revitaliser (Ces dragonnes, sont capables de se soigner et récupérer 25% de leurs points de vies lorsqu'elles passent sous 20 points de vie, mais le joueur a 5 secondes pour appuyer sur son écran et bloquer la revitalisation de Mistina) -> si le joueur a vaincu un dragon Mistina, Les points de vie maximum de son bébé dragons augmentent de 40 % des points de vies de Mistina 3) Nokan Éléments/pouvoirs : - énergie - vide - les dragons Nolan ont aléatoirement entre 30 et 100 points de vies quand le joueur est niveau 1, mais ce nombre augmente de 50 points de vie a chaque nouveau niveau de joueur -> si le joueur a vaincu un Dragon Nokan, Les points de vie maximum de son bébé dragon augmentent de 25% des points de vie du dragon Nokan vaincu 4) Oragana Éléments/pouvoirs : - vent - terre -> les dragons Oragana ont aléatoirement entre 40 et 120 points de vies, mais ce nombre augmente de 50 points de vie par niveau du joueur, Les dragons Oragana sont capables de se soigner tout comme les dragons Mistina, Mais eux, peuvent se soigner de 40% de leurs points de vies originaux, les points de vie maximum du bébé dragon du joueur augmentent de 60 points si le joueur a vaincu un dragon Oragana 5) Farocha Éléments pouvoirs : - eau - vide -> les dragons Farocha ont aléatoirement entre 50 et 130 points de vies quand le joueur est niveau 1, mais ce nombre augmente de 70 points de vies à chaque nouveau niveau du joueur, Si le joueur a vaincu un dragon Farocha, les points de vies maximum de son bébé dragon augmentent de 65 points de vies 6) Nonano Éléments/pouvoirs : - eau - vent -> les dragons Nonano ont aléatoirement entre 80 et 150 points de vies quand le joueur est niveau 1, mais les Nonanos sont les seuls dragons capables de s'adapter en temps réel à l'évolution du bébé dragon ! Leurs points de vies maximum sont augmente de 30 points de vies à chaque nouveau Nanono croisé après avoir vaincu un autre Nanono, Quand le joueur a vaincu un Nanono, les points de vies maximum de son bébé dragon augmentent de 50 points de vies 7) Jarare Éléments/pouvoirs : - énergie - végétal -> les Dragons Jarare sont, comme leurs noms laissent a desires , rares, Leur capacité d'apparition est 50 % plus faibles que les autres types de dragons , mais si le joueur réussit a vaincre un Jarare, Les points de vies maximum de son bébé dragon sont doublés ! Les dragons Jarares ont aléatoirement entre 90 et 170 points de vies quand le joueur est niveau 1, mais leur nombres de points de vies maximum augmentent de 80% a chaque nouveau niveau du joueur ! Faut faire attention à eux! 8) Eriza Éléments pouvoirs : - lumière - feu -> les Dragons Eriza ont aléatoirement entre 20 et 80 points de vies quand le joueur est niveau 1, Mais les dragons Eriza, peuvent augmenter leurs points de vie en pleins combats! Les dragons Eriza peuvent monter jusqu'à 100 points de vies maximum comme ça aléatoirement lors du combat, si le joueur réussit à vaincre un dragon Eriza, Les points de vie maximum de son bébé augmentent de 70% 9) Katoza Éléments pouvoirs : - ombre - vent -> les dragons Katoza sont les plus faibles des dragons, mais sont surnois (ce sont des dragons ombres après tout), Ils ont aléatoirement entre 10 et 50 points de vies de façon fixe Mais peuvent se soigner de tout leurs points de vie, et monter aléatoirement leur nombre de points de vie maximum à 150 points de vie , si il passent sous 10 points de vies, et que le joueur les éliminé pas en 5 secondes en appuyant sur son écran , Les points de vie maximum du bébé dragon du joueur augmentent de 20 points de vies si le joueur a vaincu un dragon Katoza 10) Ultete Éléments/pouvoirs : - Vide - végétal - le dernier des types de dragons adultes du jeu pour le moment, le dragon Ultete a aléatoirement entre 20 et 60 points de vies quand le joueur est niveau 1, Mais ce nombre augmente de 20 points de vie a chaque nouveau niveau passé par le joueur, les dragons Ultete peuvent se soigner de 10 % de leurs points de vies n'importe quand lors des combats, Ça peut sembler peu,mais ça peut vite peser! Le joueur doit faire attention ! Les points de vies maximum du bébé dragon du joueur augmentent de 40 points de vie quand le joueur a vaincu un dragon Ultete ↪💡 Consider importing and using the following plugins: @upit/storage.v1, @upit/tween.v1
User prompt
Fait en sorte que les points de vies du bébé dragon soit régénérer après chaque game over ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Les points de vies maximum du bébé dragon doivent être régénérer après chaque game over ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Fait en sorte que les points de vies du bébé dragon soit régénérer après chaque game over ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
modifie la couleur des textes de L'ui pour qu'ils soient en noir et visibles sur l'ui
User prompt
J'aimerais personnalisé le fond du jeu avec mon propre asset
User prompt
Ajoute une musique de fond en boucle au jeu
User prompt
Corrigé les problèmes, un seul dragon vaincu et une seule pierre doit être compter par combat gagné, les points de vies du bébé dragon doivent être régénérer dun niveau a un autre, et la progression du joueur doit être sauvegardée ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Ajoute les différentes pierres d'éléments manquants : végétal, vide, énergie, et vent
User prompt
Chaque élément doit avoir sa propre pierre d'éléments, ajoute les assets etc
User prompt
Ce n'est pas affiché actuellement, je veux que juste en bas du niveau actuel du joueur, il y est sa liste de pierres d'éléments collecte et son nombre de dragons adultes restants a vaincre pour passer au niveau supérieur
User prompt
Affiche le nombre de pierres d'éléments collecte par le dragon a l'ui sur le jeu, je veux que cela soit présent a l'écran, afficher
User prompt
Affiche le nombre de pierres d'éléments collecte par le dragon a l'ui sur le jeu
User prompt
Fait en sorte qu'il y est des pierres d'éléments pour chaque dragon adulte, que le nombre de pierres d'éléments du joueur soit affiche dans L'ui, et que le joueur gagne des pierres d'éléments a chaque fois qu'il a vaincu un dragon adulte de cette pierre
User prompt
Please fix the bug: 'Uncaught TypeError: currentCombat.playerTurn is not a function' in or related to this line: 'currentCombat.playerTurn();' Line Number: 371
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'toGlobal')' in or related to this line: 'var localPos = self.toLocal(obj.parent.toGlobal(obj.position));' Line Number: 364
User prompt
Please fix the bug: 'TypeError: self.getElement is not a function' in or related to this line: 'self.element = self.getElement();' Line Number: 75
User prompt
Please fix the bug: 'TypeError: self.calculateHealth is not a function' in or related to this line: 'self.maxHealth = self.calculateHealth();' Line Number: 56
User prompt
Please fix the bug: 'TypeError: self.calculateHealth is not a function' in or related to this line: 'self.maxHealth = self.calculateHealth();' Line Number: 56
User prompt
Tout les types de dragons doivent être représentée par leurs assets
Code edit (1 edits merged)
Please save this source code
User prompt
Dragons & 2épée
Initial prompt
Crée mon jeu "Dragons & 2épée" Un jeu dans lequel le joueur est un bébé dragon dont le but est de grandir , de découvrir ses éléments et pouvoirs, afin de devenir le plus fort des dragons! Pour cela, le bébé dragon doit vaincre des dragons adultes redoutables en combats, Le joueur doit aider le bébé dragon à vaincre les dragons adultes, En développant les pouvoirs de son dragon Voici la description des mécaniques du jeu et du gameplay : le jeu est un jeu de plateforme (dont la plateforme avance fur a mesure), Le joueur doit appuyer sur son écran pour déplacer son dragon d'une plateforme (arbres rouges de feu) à un autre, le bébé dragon du joueur se déplace sur l'arbre de feu ou le joueur appuie. Le joueur a un niveau : Il commence au niveau 1, et le niveau maximal est le niveau 100 Le joueur monte en niveau fur à mesure que son bébé dragon développe des éléments/pouvoirs (via les pierres d'éléments, en vaincant des dragons adultes possédant les éléments en question), Plus, le bébé dragon aura de pierres d'éléments d'un certain type, plus il croisera de dragons avec ce même type, les dragons du type de pierre dominant sont plus nombreux à vouloir combattre avec le bébé dragon Le joueur doit vaincre 3 dragons pour monter du niveau 1 au niveau 2, Puis à chaque nouveau niveau, ce nombre double par rapport au niveau précédent pour monter au niveau supérieur , Les dragons adultes apparaissent aléatoirement de temps à autre sur les plateformes , le combat commence lorsque le dragon du joueur entre en collision avec le dragon adulte. Les combats se déroulent tour par tour, la force et le nombre de dégâts par attaques, et les stratégies sont dépendantes des éléments du dragon adulte ; le bébé dragon a 50 points de vie par défaut, Mais fur a mesure que le joueur avance dans le jeu, Il gagne des points de vie selon le type de dragons qu'il a vaincu , Voici la liste des dragons adultes disponibles (pour le moment) : 1) Nilisty Éléments/pouvoirs : - ombre - feu -> les dragons Nilisty sont aléatoirement entre 25 et 100 points de vie quand le joueur est niveau 1, Mais leurs nombres de points de vies augmentent de 36 points de vie tout les niveaux de joueurs -> si le joueur a vaincu un dragon Nilisty, Son bébé dragon gagne 20% des points de vies du Nilisty en points de vies maximum 2) Mistina Éléments/pouvoirs : - lumière - végétal -> les dragons Mistina possèdent aléatoirement entre 30 et 110 points de vies quand le joueur est niveau 1, mais leur nombre de points de vie augmentent de 40 points de vies à chaque nouveau niveau du joueur, et Mistina est capable de se revitaliser (Ces dragonnes, sont capables de se soigner et récupérer 25% de leurs points de vies lorsqu'elles passent sous 20 points de vie, mais le joueur a 5 secondes pour appuyer sur son écran et bloquer la revitalisation de Mistina) -> si le joueur a vaincu un dragon Mistina, Les points de vie maximum de son bébé dragons augmentent de 40 % des points de vies de Mistina 3) Nokan Éléments/pouvoirs : - énergie - vide - les dragons Nolan ont aléatoirement entre 30 et 100 points de vies quand le joueur est niveau 1, mais ce nombre augmente de 50 points de vie a chaque nouveau niveau de joueur -> si le joueur a vaincu un Dragon Nokan, Les points de vie maximum de son bébé dragon augmentent de 25% des points de vie du dragon Nokan vaincu 4) Oragana Éléments/pouvoirs : - vent - terre -> les dragons Oragana ont aléatoirement entre 40 et 120 points de vies, mais ce nombre augmente de 50 points de vie par niveau du joueur, Les dragons Oragana sont capables de se soigner tout comme les dragons Mistina, Mais eux, peuvent se soigner de 40% de leurs points de vies originaux, les points de vie maximum du bébé dragon du joueur augmentent de 60 points si le joueur a vaincu un dragon Oragana 5) Farocha Éléments pouvoirs : - eau - vide -> les dragons Farocha ont aléatoirement entre 50 et 130 points de vies quand le joueur est niveau 1, mais ce nombre augmente de 70 points de vies à chaque nouveau niveau du joueur, Si le joueur a vaincu un dragon Farocha, les points de vies maximum de son bébé dragon augmentent de 65 points de vies 6) Nonano Éléments/pouvoirs : - eau - vent -> les dragons Nonano ont aléatoirement entre 80 et 150 points de vies quand le joueur est niveau 1, mais les Nonanos sont les seuls dragons capables de s'adapter en temps réel à l'évolution du bébé dragon ! Leurs points de vies maximum sont augmente de 30 points de vies à chaque nouveau Nanono croisé après avoir vaincu un autre Nanono, Quand le joueur a vaincu un Nanono, les points de vies maximum de son bébé dragon augmentent de 50 points de vies 7) Jarare Éléments/pouvoirs : - énergie - végétal -> les Dragons Jarare sont, comme leurs noms laissent a desires , rares, Leur capacité d'apparition est 50 % plus faibles que les autres types de dragons , mais si le joueur réussit a vaincre un Jarare, Les points de vies maximum de son bébé dragon sont doublés ! Les dragons Jarares ont aléatoirement entre 90 et 170 points de vies quand le joueur est niveau 1, mais leur nombres de points de vies maximum augmentent de 80% a chaque nouveau niveau du joueur ! Faut faire attention à eux! 8) Eriza Éléments pouvoirs : - lumière - feu -> les Dragons Eriza ont aléatoirement entre 20 et 80 points de vies quand le joueur est niveau 1, Mais les dragons Eriza, peuvent augmenter leurs points de vie en pleins combats! Les dragons Eriza peuvent monter jusqu'à 100 points de vies maximum comme ça aléatoirement lors du combat, si le joueur réussit à vaincre un dragon Eriza, Les points de vie maximum de son bébé augmentent de 70% 9) Katoza Éléments pouvoirs : - ombre - vent -> les dragons Katoza sont les plus faibles des dragons, mais sont surnois (ce sont des dragons ombres après tout), Ils ont aléatoirement entre 10 et 50 points de vies de façon fixe Mais peuvent se soigner de tout leurs points de vie, et monter aléatoirement leur nombre de points de vie maximum à 150 points de vie , si il passent sous 10 points de vies, et que le joueur les éliminé pas en 5 secondes en appuyant sur son écran , Les points de vie maximum du bébé dragon du joueur augmentent de 20 points de vies si le joueur a vaincu un dragon Katoza 10) Ultete Éléments/pouvoirs : - Vide - végétal - le dernier des types de dragons adultes du jeu pour le moment, le dragon Ultete a aléatoirement entre 20 et 60 points de vies quand le joueur est niveau 1, Mais ce nombre augmente de 20 points de vie a chaque nouveau niveau passé par le joueur, les dragons Ultete peuvent se soigner de 10 % de leurs points de vies n'importe quand lors des combats, Ça peut sembler peu,mais ça peut vite peser! Le joueur doit faire attention ! Les points de vies maximum du bébé dragon du joueur augmentent de 40 points de vie quand le joueur a vaincu un dragon Ultete Le dragon adulte que le joueur combat est aléatoire a chaque fois par rapport au dragon qui apparaît sur les plateformes
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1"); /**** * Classes ****/ var AdultDragon = Container.expand(function (type, level) { var self = Container.call(this); // Map dragon types to their specific assets var assetMap = { 'Nilisty': 'nilisty', 'Mistina': 'mistina', 'Nokan': 'nokan', 'Oragana': 'oragana', 'Farocha': 'farocha', 'Nonano': 'nonano', 'Jarare': 'jarare', 'Eriza': 'eriza', 'Katoza': 'katoza', 'Ultete': 'ultete' }; var assetName = assetMap[type] || 'nilisty'; var dragonGraphics = self.attachAsset(assetName, { anchorX: 0.5, anchorY: 0.5 }); self.dragonType = type || 'Nilisty'; self.level = level || 1; // Define calculateHealth method before using it self.calculateHealth = function () { var baseHealth = 30 + self.level * 10; var typeMultiplier = { 'Nilisty': 1.0, 'Mistina': 1.2, 'Nokan': 1.1, 'Oragana': 1.3, 'Farocha': 1.4, 'Nonano': 1.1, 'Jarare': 1.2, 'Eriza': 1.5, 'Katoza': 1.3, 'Ultete': 1.6 }; return Math.floor(baseHealth * (typeMultiplier[self.dragonType] || 1.0)); }; // Define getElement method before using it self.getElement = function () { var elements = { 'Nilisty': 'Fire', 'Mistina': 'Water', 'Nokan': 'Earth', 'Oragana': 'Fire', 'Farocha': 'Dark', 'Nonano': 'Ice', 'Jarare': 'Lightning', 'Eriza': 'Light', 'Katoza': 'Earth', 'Ultete': 'Shadow' }; return elements[self.dragonType] || 'Fire'; }; self.maxHealth = self.calculateHealth(); self.health = self.maxHealth; self.element = self.getElement(); self.canHeal = ['Mistina', 'Farocha', 'Eriza'].includes(self.dragonType); self.isHealing = false; self.healingTimer = 0; // Dragons now use their own colored assets, no tinting needed // Store original colors for healing effects var originalColors = { 'Nilisty': 0x8b0000, 'Mistina': 0x00ff7f, 'Nokan': 0x4b0082, 'Oragana': 0x8b4513, 'Farocha': 0x191970, 'Nonano': 0x00bfff, 'Jarare': 0x32cd32, 'Eriza': 0xffd700, 'Katoza': 0x2f4f4f, 'Ultete': 0x556b2f }; self.startHealing = function () { if (self.canHeal && !self.isHealing) { self.isHealing = true; self.healingTimer = 5000; // 5 seconds dragonGraphics.tint = 0x00ff00; // Green tint when healing } }; self.interruptHealing = function () { if (self.isHealing) { self.isHealing = false; self.healingTimer = 0; dragonGraphics.tint = originalColors[self.dragonType] || 0x8b0000; return true; } return false; }; self.completeHealing = function () { if (self.isHealing) { self.health = Math.min(self.health + Math.floor(self.maxHealth * 0.3), self.maxHealth); self.isHealing = false; self.healingTimer = 0; dragonGraphics.tint = originalColors[self.dragonType] || 0x8b0000; } }; self.update = function () { if (self.isHealing) { self.healingTimer -= 16.67; // ~60fps if (self.healingTimer <= 0) { self.completeHealing(); } } }; return self; }); var BabyDragon = Container.expand(function () { var self = Container.call(this); var dragonGraphics = self.attachAsset('babyDragon', { anchorX: 0.5, anchorY: 0.5 }); self.maxHealth = 50; self.health = self.maxHealth; self.level = 1; self.experience = 0; self.experienceToNext = 3; self.targetY = 0; self.jumpSpeed = 0; self.isJumping = false; self.elementalStones = {}; self.takeDamage = function (damage) { self.health = Math.max(0, self.health - damage); LK.effects.flashObject(self, 0xff0000, 500); }; self.gainExperience = function () { self.experience++; if (self.experience >= self.experienceToNext) { self.levelUp(); } }; self.levelUp = function () { self.level++; self.experience = 0; self.experienceToNext *= 2; // Health bonus var healthBonus = Math.floor(self.maxHealth * 0.1); self.maxHealth += healthBonus; self.health = self.maxHealth; LK.effects.flashObject(self, 0xffd700, 1000); }; self.jumpTo = function (targetY) { if (!self.isJumping) { self.isJumping = true; self.targetY = targetY; self.jumpSpeed = -8; LK.getSound('jump').play(); } }; self.update = function () { if (self.isJumping) { self.jumpSpeed += 0.5; // gravity self.y += self.jumpSpeed; if (self.y >= self.targetY) { self.y = self.targetY; self.isJumping = false; self.jumpSpeed = 0; } } }; return self; }); var Combat = Container.expand(function (player, enemy) { var self = Container.call(this); self.player = player; self.enemy = enemy; self.isPlayerTurn = true; self.turnTimer = 0; self.ui = new CombatUI(); self.addChild(self.ui); self.playerAttack = function () { if (!self.isPlayerTurn) return; var damage = 15 + Math.floor(Math.random() * 10); self.enemy.health = Math.max(0, self.enemy.health - damage); self.ui.showAction('You deal ' + damage + ' damage!'); LK.getSound('attack').play(); if (self.enemy.health <= 0) { self.victory(); } else { self.isPlayerTurn = false; self.turnTimer = 1000; } }; self.enemyTurn = function () { if (Math.random() < 0.3 && self.enemy.canHeal && self.enemy.health < self.enemy.maxHealth * 0.7) { self.enemy.startHealing(); self.ui.showAction(self.enemy.dragonType + ' is healing! Tap to interrupt!'); } else { var damage = 10 + Math.floor(Math.random() * 8); self.player.takeDamage(damage); self.ui.showAction(self.enemy.dragonType + ' deals ' + damage + ' damage!'); if (self.player.health <= 0) { self.defeat(); return; } } self.isPlayerTurn = true; self.turnTimer = 0; }; self.victory = function () { self.player.gainExperience(); // Grant elemental stone if (!self.player.elementalStones[self.enemy.element]) { self.player.elementalStones[self.enemy.element] = 0; } self.player.elementalStones[self.enemy.element]++; LK.setScore(LK.getScore() + 100); LK.getSound('victory').play(); self.ui.showAction('Victory! Gained ' + self.enemy.element + ' Stone! Level: ' + self.player.level + ' XP: ' + self.player.experience + '/' + self.player.experienceToNext); LK.setTimeout(function () { inCombat = false; currentCombat = null; self.destroy(); }, 2000); }; self.defeat = function () { LK.getSound('defeat').play(); self.ui.showAction('Defeat! Game Over'); LK.setTimeout(function () { LK.showGameOver(); }, 2000); }; self.update = function () { self.ui.updateHealthBars(self.player.health, self.player.maxHealth, self.enemy.health, self.enemy.maxHealth); if (self.turnTimer > 0) { self.turnTimer -= 16.67; if (self.turnTimer <= 0) { self.enemyTurn(); } } }; return self; }); var CombatUI = Container.expand(function () { var self = Container.call(this); var background = self.attachAsset('healthBarBg', { width: 2048, height: 2732, anchorX: 0, anchorY: 0, alpha: 0.8 }); background.tint = 0x000000; var playerHealthBg = self.attachAsset('healthBarBg', { anchorX: 0.5, anchorY: 0.5, x: 1024, y: 2200 }); var playerHealthBar = self.attachAsset('healthBar', { anchorX: 0.5, anchorY: 0.5, x: 1024, y: 2200 }); var enemyHealthBg = self.attachAsset('healthBarBg', { anchorX: 0.5, anchorY: 0.5, x: 1024, y: 400 }); var enemyHealthBar = self.attachAsset('healthBar', { anchorX: 0.5, anchorY: 0.5, x: 1024, y: 400 }); var attackButton = self.attachAsset('combatButton', { anchorX: 0.5, anchorY: 0.5, x: 1024, y: 2400 }); self.playerHealthBar = playerHealthBar; self.enemyHealthBar = enemyHealthBar; self.attackButton = attackButton; var playerInfoText = new Text2('', { size: 40, fill: '#ffffff' }); playerInfoText.anchor.set(0.5, 0.5); playerInfoText.x = 1024; playerInfoText.y = 2300; self.addChild(playerInfoText); self.playerInfoText = playerInfoText; var enemyInfoText = new Text2('', { size: 40, fill: '#ffffff' }); enemyInfoText.anchor.set(0.5, 0.5); enemyInfoText.x = 1024; enemyInfoText.y = 500; self.addChild(enemyInfoText); self.enemyInfoText = enemyInfoText; var actionText = new Text2('', { size: 50, fill: '#ffff00' }); actionText.anchor.set(0.5, 0.5); actionText.x = 1024; actionText.y = 1300; self.addChild(actionText); self.actionText = actionText; self.updateHealthBars = function (playerHealth, playerMaxHealth, enemyHealth, enemyMaxHealth) { var playerRatio = playerHealth / playerMaxHealth; var enemyRatio = enemyHealth / enemyMaxHealth; self.playerHealthBar.scaleX = playerRatio; self.enemyHealthBar.scaleX = enemyRatio; self.playerInfoText.setText('HP: ' + playerHealth + '/' + playerMaxHealth); self.enemyInfoText.setText('HP: ' + enemyHealth + '/' + enemyMaxHealth); }; self.showAction = function (text) { self.actionText.setText(text); tween(self.actionText, { alpha: 1 }, { duration: 0 }); tween(self.actionText, { alpha: 0 }, { duration: 2000 }); }; self.down = function (x, y, obj) { // Check if obj and obj.parent exist before calling toGlobal if (obj && obj.parent && obj.parent.toGlobal) { var localPos = self.toLocal(obj.parent.toGlobal(obj.position)); } if (currentCombat && currentCombat.enemy.isHealing) { if (currentCombat.enemy.interruptHealing()) { self.showAction('Healing Interrupted!'); currentCombat.playerAttack(); } } else if (currentCombat && currentCombat.isPlayerTurn) { currentCombat.playerAttack(); } }; return self; }); var Platform = Container.expand(function () { var self = Container.call(this); var platformGraphics = self.attachAsset('platform', { anchorX: 0.5, anchorY: 0.5 }); self.speed = -2; self.update = function () { self.x += self.speed; }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87ceeb }); /**** * Game Code ****/ // Dragon type specific assets // Shadow & Fire - dark red // Light & Plant - light green // Energy & Void - indigo // Wind & Earth - saddle brown // Water & Void - midnight blue // Water & Wind - deep sky blue // Energy & Plant - lime green (rare) // Light & Fire - gold // Shadow & Wind - dark slate gray // Void & Plant - dark olive green var platforms = []; var adultDragons = []; var babyDragon = new BabyDragon(); var inCombat = false; var currentCombat = null; var platformSpawnTimer = 0; var dragonSpawnTimer = 0; var scrollSpeed = 2; // Dragon types var dragonTypes = ['Nilisty', 'Mistina', 'Nokan', 'Oragana', 'Farocha', 'Nonano', 'Jarare', 'Eriza', 'Katoza', 'Ultete']; // Initialize baby dragon babyDragon.x = 300; babyDragon.y = 1800; babyDragon.elementalStones = {}; game.addChild(babyDragon); // Create initial platforms for (var i = 0; i < 5; i++) { var platform = new Platform(); platform.x = 400 + i * 400; platform.y = 1800 + (Math.random() * 400 - 200); platforms.push(platform); game.addChild(platform); } // UI Elements var levelText = new Text2('Level: 1', { size: 60, fill: '#ffffff' }); levelText.anchor.set(0, 0); levelText.x = 150; levelText.y = 100; LK.gui.topLeft.addChild(levelText); // Elemental stones display below level var elementalStonesDisplay = new Text2('', { size: 35, fill: '#ffd700' }); elementalStonesDisplay.anchor.set(0, 0); elementalStonesDisplay.x = 150; elementalStonesDisplay.y = 170; LK.gui.topLeft.addChild(elementalStonesDisplay); // Remaining dragons display below stones var remainingDragonsDisplay = new Text2('', { size: 35, fill: '#ffffff' }); remainingDragonsDisplay.anchor.set(0, 0); remainingDragonsDisplay.x = 150; remainingDragonsDisplay.y = 210; LK.gui.topLeft.addChild(remainingDragonsDisplay); var healthText = new Text2('HP: 50/50', { size: 60, fill: '#ffffff' }); healthText.anchor.set(1, 0); healthText.x = 1900; healthText.y = 100; LK.gui.topRight.addChild(healthText); var scoreText = new Text2('Score: 0', { size: 60, fill: '#ffffff' }); scoreText.anchor.set(0.5, 0); scoreText.x = 1024; scoreText.y = 100; LK.gui.top.addChild(scoreText); var stonesText = new Text2('Stones: 0', { size: 70, fill: '#ffd700' }); stonesText.anchor.set(0.5, 0); stonesText.x = 1024; stonesText.y = 200; LK.gui.top.addChild(stonesText); // Individual stone counters display var stoneCountersText = new Text2('', { size: 45, fill: '#ffffff' }); stoneCountersText.anchor.set(0.5, 0); stoneCountersText.x = 1024; stoneCountersText.y = 280; LK.gui.top.addChild(stoneCountersText); game.down = function (x, y, obj) { if (inCombat) return; // Find nearest platform to jump to var nearestPlatform = null; var minDistance = Infinity; for (var i = 0; i < platforms.length; i++) { var platform = platforms[i]; var distance = Math.abs(platform.x - babyDragon.x); if (distance < minDistance && platform.x > babyDragon.x - 100) { minDistance = distance; nearestPlatform = platform; } } if (nearestPlatform) { babyDragon.jumpTo(nearestPlatform.y); } }; function spawnPlatform() { var platform = new Platform(); platform.x = 2200; platform.y = 1400 + Math.random() * 800; platforms.push(platform); game.addChild(platform); } function spawnDragon() { if (platforms.length > 0) { var randomPlatform = platforms[Math.floor(Math.random() * platforms.length)]; var dragonType = dragonTypes[Math.floor(Math.random() * dragonTypes.length)]; var dragon = new AdultDragon(dragonType, babyDragon.level); dragon.x = randomPlatform.x; dragon.y = randomPlatform.y - 80; adultDragons.push(dragon); game.addChild(dragon); } } function startCombat(dragon) { inCombat = true; currentCombat = new Combat(babyDragon, dragon); game.addChild(currentCombat); // Remove dragon from world var index = adultDragons.indexOf(dragon); if (index > -1) { adultDragons.splice(index, 1); } } game.update = function () { if (inCombat) { return; } // Update platforms for (var i = platforms.length - 1; i >= 0; i--) { var platform = platforms[i]; if (platform.x < -200) { platform.destroy(); platforms.splice(i, 1); } } // Update adult dragons for (var i = adultDragons.length - 1; i >= 0; i--) { var dragon = adultDragons[i]; dragon.x -= scrollSpeed; if (dragon.x < -200) { dragon.destroy(); adultDragons.splice(i, 1); continue; } // Check collision with baby dragon if (dragon.intersects(babyDragon)) { startCombat(dragon); dragon.destroy(); break; } } // Spawn platforms platformSpawnTimer += 16.67; if (platformSpawnTimer >= 2000) { spawnPlatform(); platformSpawnTimer = 0; } // Spawn dragons dragonSpawnTimer += 16.67; if (dragonSpawnTimer >= 5000) { spawnDragon(); dragonSpawnTimer = 0; } // Update UI levelText.setText('Level: ' + babyDragon.level); healthText.setText('HP: ' + babyDragon.health + '/' + babyDragon.maxHealth); scoreText.setText('Score: ' + LK.getScore()); // Count total elemental stones and create detailed display var totalStones = 0; var stoneDetails = []; var elementOrder = ['Fire', 'Water', 'Earth', 'Dark', 'Ice', 'Lightning', 'Light', 'Shadow']; for (var i = 0; i < elementOrder.length; i++) { var element = elementOrder[i]; if (babyDragon.elementalStones[element] && babyDragon.elementalStones[element] > 0) { var count = babyDragon.elementalStones[element]; totalStones += count; stoneDetails.push(element + ': ' + count); } } stonesText.setText('Total Stones: ' + totalStones); // Update individual stone counters if (stoneDetails.length > 0) { stoneCountersText.setText(stoneDetails.join(' | ')); } else { stoneCountersText.setText('No elemental stones collected'); } // Update elemental stones display below level if (stoneDetails.length > 0) { elementalStonesDisplay.setText('Stones: ' + stoneDetails.slice(0, 3).join(', ')); } else { elementalStonesDisplay.setText('Stones: None collected'); } // Calculate remaining dragons to defeat for next level var remainingDragons = babyDragon.experienceToNext - babyDragon.experience; remainingDragonsDisplay.setText('Dragons to next level: ' + remainingDragons); };
===================================================================
--- original.js
+++ change.js
@@ -217,9 +217,9 @@
}
self.player.elementalStones[self.enemy.element]++;
LK.setScore(LK.getScore() + 100);
LK.getSound('victory').play();
- self.ui.showAction('Victory! Level: ' + self.player.level + ' XP: ' + self.player.experience + '/' + self.player.experienceToNext);
+ self.ui.showAction('Victory! Gained ' + self.enemy.element + ' Stone! Level: ' + self.player.level + ' XP: ' + self.player.experience + '/' + self.player.experienceToNext);
LK.setTimeout(function () {
inCombat = false;
currentCombat = null;
self.destroy();
@@ -558,25 +558,29 @@
scoreText.setText('Score: ' + LK.getScore());
// Count total elemental stones and create detailed display
var totalStones = 0;
var stoneDetails = [];
- for (var element in babyDragon.elementalStones) {
- var count = babyDragon.elementalStones[element];
- totalStones += count;
- stoneDetails.push(element + ': ' + count);
+ var elementOrder = ['Fire', 'Water', 'Earth', 'Dark', 'Ice', 'Lightning', 'Light', 'Shadow'];
+ for (var i = 0; i < elementOrder.length; i++) {
+ var element = elementOrder[i];
+ if (babyDragon.elementalStones[element] && babyDragon.elementalStones[element] > 0) {
+ var count = babyDragon.elementalStones[element];
+ totalStones += count;
+ stoneDetails.push(element + ': ' + count);
+ }
}
stonesText.setText('Total Stones: ' + totalStones);
// Update individual stone counters
if (stoneDetails.length > 0) {
stoneCountersText.setText(stoneDetails.join(' | '));
} else {
- stoneCountersText.setText('No stones collected');
+ stoneCountersText.setText('No elemental stones collected');
}
// Update elemental stones display below level
if (stoneDetails.length > 0) {
elementalStonesDisplay.setText('Stones: ' + stoneDetails.slice(0, 3).join(', '));
} else {
- elementalStonesDisplay.setText('Stones: None');
+ elementalStonesDisplay.setText('Stones: None collected');
}
// Calculate remaining dragons to defeat for next level
var remainingDragons = babyDragon.experienceToNext - babyDragon.experience;
remainingDragonsDisplay.setText('Dragons to next level: ' + remainingDragons);
Bébé dragon en train de voler. In-Game asset. 2d. High contrast. No shadows
Arbre rouge en feu. In-Game asset. 2d. High contrast. No shadows
Dragonne rose princesse majestueuse. In-Game asset. 2d. High contrast. No shadows
Dragon jaune du tonnerre et du vide. In-Game asset. 2d. High contrast. No shadows
Dragon de l'orage. In-Game asset. 2d. High contrast. No shadows
Dragon légendaire de la nature. In-Game asset. 2d. High contrast. No shadows
Dragon de la lumière. In-Game asset. 2d. High contrast. No shadows
Dragon végétal et du vide. In-Game asset. 2d. High contrast. No shadows
Dragon des glaces. In-Game asset. 2d. High contrast. No shadows
Dragon farouche de l'eau. In-Game asset. 2d. High contrast. No shadows
Dragon de l'ombre. In-Game asset. 2d. High contrast. No shadows
Dragon du feu. In-Game asset. 2d. High contrast. No shadows
Pierre élément feu. In-Game asset. 2d. High contrast. No shadows
Pierre élément eau. In-Game asset. 2d. High contrast. No shadows
Pierre élément terre. In-Game asset. 2d. High contrast. No shadows
Pierre élément ombre. In-Game asset. 2d. High contrast. No shadows
Pierre élément glace. In-Game asset. 2d. High contrast. No shadows
Pierre élément energie. In-Game asset. 2d. High contrast. No shadows
Pierre élément végétal. In-Game asset. 2d. High contrast. No shadows
Pierre element lumière. In-Game asset. 2d. High contrast. No shadows
Pierre élémentaire ombre. In-Game asset. 2d. High contrast. No shadows
Pierre élémentaire vent. In-Game asset. 2d. High contrast. No shadows
Pierre élémentaire vide. In-Game asset. 2d. High contrast. No shadows
Fond d'écran ciel avec nuages. In-Game asset. 2d. High contrast. No shadows