User prompt
haz que view info lleve directamente a la información del slimes que se haya seleccionado
User prompt
reposiciona los botones view info y el de filtrado a la mitad de la pantalla - 100
User prompt
Agrega 2 botones, uno para filtrar el orden de los slimes segun sus estrellas +/- y remplaza continue por view info. Reposicióna estos botones sobre los slimes displays y baja los dlisplay a la mitad inferior
User prompt
Agrega 2 botones, soft y remplaza continue por view info. Reposicióna estos botones por debajo del dislay del slime elegido y baja los dlisplay a la mitad inferior
User prompt
haz que los displays de los slimes se centren y escalen su tamaño para entrar adecuadamente en su marco ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
haz que los displays de los slimes se centren y escalen su tamaño para entrar adecuadamente en su marco ↪💡 Consider importing and using the following plugins: @upit/tween.v1
Code edit (1 edits merged)
Please save this source code
Code edit (3 edits merged)
Please save this source code
User prompt
Agregale a cada displays de los slimes un cuadro blanco detras
User prompt
elimina los nombres de los displays de los slimes y agregales de fondo un cuadro blanco
User prompt
Agrega en la parte superior un display grande del slimes que se selecciona y debajo sus estrellas
User prompt
Crea un nuevo menu llamado displaySlimes. Este menú estará entre el inicio y los game content
Code edit (2 edits merged)
Please save this source code
User prompt
agrega una transición negra entre el titulo y el juego para suavizar el cambio
User prompt
haz que al tocar el titulo del juego este se suelte como un cuadro
User prompt
haz que al tocar el cuadro este se tuerza
User prompt
Haz lo siguiente como transición del titulo al juego: - El titulo se suelta como un cuadro - espera 4 segundos y se cae al piso - al mismo tiempo ocurre una transición negra mientras el cuadro se cae - La transición se desvanece lentamente y se muestra el contenido del juego
User prompt
Haz lo siguiente como transición del titulo al juego: - El titulo se suelta como un cuadro - espera 2 segundos y se cae al piso rápido - ocurre una transición negra mientras el cuadro se cae - La transición se desvanece y se muestra el contenido del juego
User prompt
Re-haz todo lo que es la transición del menú de inicio a contenido del juego ya que tiene errores donde se ve el fondo del inicio cuando esta en medio de la transición y consume muchas lineas Haz lo siguiente como transición: - El titulo se suelta para la izquierda como un cuadro - Se cae al piso rapido - ocurre una transición negra mientras el cuadro se cae - La transición se desvanece y se muestra el contenido del juego
User prompt
Re-haz todo lo que es la transición del menú de inicio a contenido del juego ya que tiene errores donde se ve el fondo del inicio cuando esta en medio de la transición y consume muchas lineas Haz lo siguiente como transición: - El titulo se suelta para la izquierda como un cuadro - Se cae al piso rapido - ocurre una transición negra mientras el cuadro se cae - La transición se desvanece y se muestra el contenido del juego ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Elimina todo lo que es la animación de transición
User prompt
elimina la transición del inicio ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Re-haz todo lo que es la transición del menú de inicio a contenido del juego ya que tiene errores donde se ve el fondo del inicio cuando esta en medio de la transición y consume muchas lineas Haz lo siguiente como transición: - El titulo se suelta para la izquierda como un cuadro - Se cae al piso rapido - ocurre una transición negra mientras el cuadro se cae - La transición se desvanece y se muestra el contenido del juego
Code edit (1 edits merged)
Please save this source code
User prompt
Re-haz todo lo que es la transición del menú de inicio a contenido del juego ya que tiene errores donde se ve el fondo del inicio cuando esta en medio de la transición y consume muchas lineas Haz lo siguiente como transición: - El titulo se suelta para la izquierda como un cuadro - Se cae al piso rapido - ocurre una transición negra mientras el cuadro se cae - La transición se desvanece y se muestra el contenido del juego ↪💡 Consider importing and using the following plugins: @upit/tween.v1
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1", { persistLanguage: true, language: "en" }); /**** * Classes ****/ var MusicNameOverlay = Container.expand(function () { var self = Container.call(this); var musicText = new Text2("", { size: 110, fill: 0x000000, align: "center", dropShadow: true, dropShadowColor: 0x000000, dropShadowDistance: 3, dropShadowAlpha: 0.5 }); musicText.anchor.set(0.5, 0.5); musicText.x = 2048 / 2; musicText.y = 150; musicText.alpha = 0; self.addChild(musicText); var musicNames = { en: ["Slime Symphony No. 5", "Bouncy Beats", "Gelatinous Groove", "Blob Bop", "Jiggle Jam", "Slimy Sonata", "Elasticity Etude", "Viscous Vibes", "Gooey Grooves", "Jiggly Jazz", "Will anyone read this?"], es: ["Sinfonía de Slime No. 5", "Ritmos Rebotantes", "Ritmo Gelatinoso", "Bop de Burbuja", "Mermelada Temblorosa", "Sonata Viscosa", "Estudio Elastico", "Vibraciones Viscosas", "Ritmos Pegajosos", "Jazz Tembloroso", "¿Alguien leerá esto?"] }; self.showRandomName = function (language) { var names = musicNames[language] || musicNames.en; var randomName = names[Math.floor(Math.random() * names.length)]; tween.stop(musicText); musicText.setText(randomName); musicText.alpha = 0; musicText.y = 180; tween(musicText, { alpha: 1, y: 150 }, { duration: 800, easing: tween.easeOut, onFinish: function onFinish() { LK.setTimeout(function () { tween(musicText, { alpha: 0, y: 100 }, { duration: 1200, easing: tween.easeIn }); }, 3000); } }); }; return self; }); var Slime = Container.expand(function () { var self = Container.call(this); self.slimeAsset = self.attachAsset('ClasicSlime', { anchorX: 0.5, anchorY: 0.5 }); self.baseScale = 3.5; self.lastX = self.lastY = 0; self.baseX = 0; self.baseY = 0; self.setBasePosition = function (x, y) { self.baseX = x; self.baseY = y; self.x = x; self.y = y; }; self.update = function () { self.lastX = self.x; self.lastY = self.y; }; return self; }); var Star = Container.expand(function () { var self = Container.call(this); var starGraphics = self.attachAsset('Star', { anchorX: 0.5, anchorY: 0.5, width: 100, height: 100 }); self.setColorByRarity = function (rarityLevel) { var colors = [0xaaaaaa, 0x8ab4f8, 0x52cca3, 0x1e88e5, 0x7e57c2, 0xab47bc, 0x8e24aa, 0x6a1b9a, 0x4a148c, 0x38006b]; starGraphics.tint = rarityLevel >= 1 && rarityLevel <= 10 ? colors[rarityLevel - 1] : colors[0]; self.glowIntensity = 0.2 + rarityLevel / 10; LK.setTimeout(function () { tween(starGraphics, { scaleX: 1 + self.glowIntensity * 0.1, scaleY: 1 + self.glowIntensity * 0.1 }, { duration: 1000 + rarityLevel * 100, easing: tween.easeInOut, repeat: -1, yoyo: true }); }, Math.random() * 500); }; return self; }); var StartScreen = Container.expand(function () { var self = Container.call(this); var startBg = self.attachAsset('BGInitial', { anchorX: 0, anchorY: 0, width: 2048, height: 2732 }); var titleImage = self.attachAsset('TittleAsset', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 - 300, scaleX: 1.2, scaleY: 1.2 }); self.interactive = true; self.down = function () { if (self.onStart) { if (autoStartTimer) { LK.clearTimeout(autoStartTimer); } LK.getSound('InterfazSound').play(); self.onStart(); } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 }); /**** * Game Code ****/ var isDayTime = true; var darkTint = 0x404060; function checkDayTime() { var now = new Date(); var hours = now.getHours(); return hours >= 6 && hours < 18; } function multiplyColors(color1, color2) { var r1 = color1 >> 16 & 0xFF; var g1 = color1 >> 8 & 0xFF; var b1 = color1 & 0xFF; var r2 = color2 >> 16 & 0xFF; var g2 = color2 >> 8 & 0xFF; var b2 = color2 & 0xFF; var r = Math.floor(r1 * r2 / 255); var g = Math.floor(g1 * g2 / 255); var b = Math.floor(b1 * b2 / 255); return r << 16 | g << 8 | b; } var transitionOverlay = new Container(); var transitionBg = LK.getAsset('transition', { anchorX: 0, anchorY: 0, width: 2048, height: 2732, alpha: 0 }); transitionOverlay.addChild(transitionBg); var gameContent = new Container(); gameContent.y = 0; gameContent.alpha = 0; gameContent.scale.set(0.5); var bgMenu = LK.getAsset('BGMenu', { anchorX: 0, anchorY: 0, x: 0, y: 2032 / 2, width: 2048, height: 3532 / 2 }); var bg = LK.getAsset('BG', { anchorX: 0, anchorY: 0, x: 0, y: 0, width: 2048, height: 2032 / 2 }); var startScreen = new StartScreen(); var autoStartTimer = LK.setTimeout(function () { if (startScreen && startScreen.parent) { startScreen.down(); } }, 10000); startScreen.onStart = function () { // Add transition overlay if not already added if (!transitionOverlay.parent) { game.addChild(transitionOverlay); } // Fade in the black overlay tween(transitionBg, { alpha: 1 }, { duration: 400, easing: tween.easeOut, onFinish: function onFinish() { // Make game content full size but still invisible behind the overlay gameContent.alpha = 1; gameContent.scaleX = 1; gameContent.scaleY = 1; // Remove start screen if (startScreen && startScreen.parent) { game.removeChild(startScreen); startScreen = null; } // Fade out the black overlay to reveal the game tween(transitionBg, { alpha: 0 }, { duration: 600, easing: tween.easeIn, onFinish: function onFinish() { // Remove transition overlay when done if (transitionOverlay && transitionOverlay.parent) { game.removeChild(transitionOverlay); } } }); } }); }; var interfaz = LK.getAsset('Interfaz', { anchorX: 0.5, anchorY: 0, width: 2048, height: 400 }); var sortButton = LK.getAsset('BotonExtras', { anchorX: 0.5, anchorY: 0.5, scaleX: 0.8, scaleY: 0.8, x: 800, y: -700 }); sortButton.interactive = true; sortButton.down = function () { LK.getSound('InterfazSound').play(); changeSortOrder(); }; var sortText = new Text2("★↑", { size: 90, fill: 0x000000 }); sortText.anchor.set(0.5, 0.5); sortText.x = sortButton.x; sortText.y = sortButton.y + 35; interfaz.x = bgMenu.width / 2; interfaz.y = bgMenu.y; var leftButton = LK.getAsset('BotonChange', { anchorX: 0.5, anchorY: 0.5, scaleX: -1, x: -800, y: interfaz.height / 2 }); leftButton.interactive = true; var rightButton = LK.getAsset('BotonChange', { anchorX: 0.5, anchorY: 0.5, x: 800, y: interfaz.height / 2 }); rightButton.interactive = true; var currentSlimeIndex = 0; var currentSortOrder = 0; var currentLanguage = storage.language; var languageButton = LK.getAsset('BotonExtras', { anchorX: 0.5, anchorY: 0.5, scaleX: 0.8, scaleY: 0.8, x: 800, y: -900 }); languageButton.interactive = true; languageButton.down = function () { LK.getSound('InterfazSound').play(); toggleLanguage(); }; var languageText = new Text2(currentLanguage.toUpperCase(), { size: 70, fill: 0x000000 }); languageText.anchor.set(0.5, 0.5); languageText.x = languageButton.x; languageText.y = languageButton.y + 35; var availableLanguages = ['en', 'es']; var translations = { sortLabels: { en: ["★↑", "★↓", "A-Z", "Z-A", "Size↑", "Size↓"], es: ["★↑", "★↓", "A-Z", "Z-A", "Tamaño↑", "Tamaño↓"] }, categoryTitles: { rarity: { en: "Rarity", es: "Rareza" }, size: { en: "Size", es: "Tamaño" }, history: { en: "History", es: "Historia" }, location: { en: "Location", es: "Ubicación" }, favoriteFood: { en: "Favorite Food", es: "Comida Favorita" }, ability: { en: "Ability", es: "Habilidad" }, stats: { en: "Stats", es: "Estadísticas" }, lifespan: { en: "Lifespan", es: "Esperanza de vida" } }, rarityNames: { 1: { en: "Common", es: "Común" }, 2: { en: "Uncommon", es: "Poco Común" }, 3: { en: "Infrequent", es: "Infrecuente" }, 4: { en: "Rare", es: "Raro" }, 5: { en: "Epic", es: "Épico" }, 6: { en: "Exceptional", es: "Excepcional" }, 7: { en: "Legendary", es: "Legendario" }, 8: { en: "Mythic", es: "Mítico" }, 9: { en: "Arcane", es: "Arcano" }, 10: { en: "Supreme", es: "Supremo" } }, sizeDescriptions: { tiny: { en: "Tiny", es: "Diminuto" }, small: { en: "Small", es: "Pequeño" }, medium: { en: "Medium", es: "Mediano" }, large: { en: "Large", es: "Grande" }, veryLarge: { en: "Very Large", es: "Muy Grande" }, enormous: { en: "Enormous", es: "Enorme" } }, statNames: { strength: { en: "Strength", es: "Fuerza" }, agility: { en: "Agility", es: "Agilidad" }, defense: { en: "Defense", es: "Defensa" }, magic: { en: "Magic", es: "Magia" }, luck: { en: "Luck", es: "Suerte" }, mysticism: { en: "Mysticism", es: "Misticismo" } } }; function updateLanguageUI() { languageText.setText(currentLanguage.toUpperCase()); var slimeData = SlimeInfo[currentSlimeIndex]; var displayName = slimeData['SlimeName' + (currentLanguage === 'es' ? 'Es' : '')] || slimeData.SlimeName; slimeNameText.setText(displayName); var sortLabels = translations.sortLabels[currentLanguage]; sortText.setText(sortLabels[currentSortOrder]); updateInfoPanel(); if (musicNameOverlay && musicNameOverlay.parent) { musicNameOverlay.showRandomName(currentLanguage); } } function toggleLanguage() { var currentIndex = availableLanguages.indexOf(currentLanguage); var nextIndex = (currentIndex + 1) % availableLanguages.length; currentLanguage = availableLanguages[nextIndex]; storage.language = currentLanguage; updateLanguageUI(); } function changeSortOrder() { currentSortOrder = (currentSortOrder + 1) % 6; var sortLabels = translations.sortLabels[currentLanguage] || translations.sortLabels.en; sortText.setText(sortLabels[currentSortOrder]); if (currentSortOrder === 0) { SlimeInfo.sort(function (a, b) { return a.Rarity - b.Rarity; }); } else if (currentSortOrder === 1) { SlimeInfo.sort(function (a, b) { return b.Rarity - a.Rarity; }); } else if (currentSortOrder === 2) { SlimeInfo.sort(function (a, b) { return (a.SlimeName || '').localeCompare(b.SlimeName || ''); }); } else if (currentSortOrder === 3) { SlimeInfo.sort(function (a, b) { return (b.SlimeName || '').localeCompare(a.SlimeName || ''); }); } else if (currentSortOrder === 4) { SlimeInfo.sort(function (a, b) { return (a.Size || 1.0) - (b.Size || 1.0); }); } else { SlimeInfo.sort(function (a, b) { return (b.Size || 1.0) - (a.Size || 1.0); }); } slimes = SlimeInfo.map(function (slime) { var slimeName = slime.SlimeName.replace(/\s+/g, ''); return slimeName; }); slimeNames = SlimeInfo.map(function (slime) { return slime.SlimeName; }); rarityValues = SlimeInfo.map(function (slime) { return slime.Rarity; }); currentSlimeIndex = 0; updateSlimeAndInfo(); } function wrapText(text, maxWidth, textSize) { if (!text) { return ""; } var words = text.split(' '); var wrappedText = '', line = ''; var charsPerLine = Math.floor(maxWidth / (textSize * 0.5)); for (var i = 0; i < words.length; i++) { var testLine = line + words[i] + ' '; if (testLine.length > charsPerLine) { wrappedText += line.trim() + '\n'; line = words[i] + ' '; } else { line = testLine; } } return wrappedText + line.trim(); } function sortSlimesByRarity(slimes) { return slimes.slice().sort(function (a, b) { return b.Rarity - a.Rarity; }); } var SlimeInfo = [{ SlimeName: 'Classic Slime', SlimeNameEs: 'Slime Clásico', Rarity: 1, Size: 1.0, History: 'The most common and friendly of all slimes, Clasic Slimes are believed to be the original form from which all other slimes evolved.', HistoryEs: 'El más común y amigable de todos los slimes, los Slimes Clásicos son considerados la forma original de la que evolucionaron todos los demás slimes.', Location: 'Meadows, gardens, and anywhere with fresh dew', LocationEs: 'Praderas, jardines y cualquier lugar con rocío fresco', FavoriteFood: 'Fresh grass and morning dew', FavoriteFoodEs: 'Hierba fresca y rocío de la mañana', Ability: 'Can split into two smaller slimes when threatened', AbilityEs: 'Puede dividirse en dos slimes más pequeños cuando se siente amenazado', Stats: { strength: 3, agility: 5, defense: 2, magic: 1, luck: 2, mysticism: 1 }, Lifespan: '5-8 years', LifespanEs: '5-8 años' }, { SlimeName: 'Snowy Slime', SlimeNameEs: 'Slime Nevado', Rarity: 2, Size: 0.9, History: 'Snowy Slimes are born from snowdrifts touched by moonlight. They are gentle and love cold climates.', HistoryEs: 'Los Slimes Nevados nacen de ventisqueros tocados por la luz de la luna. Son gentiles y aman los climas fríos.', Location: 'Snowfields, icy caves, and mountaintops', LocationEs: 'Campos nevados, cuevas heladas y cimas de montañas', FavoriteFood: 'Icicles and frozen berries', FavoriteFoodEs: 'Carámbanos y bayas congeladas', Ability: 'Can lower the temperature around them, freezing small puddles instantly', AbilityEs: 'Puede bajar la temperatura a su alrededor, congelando pequeños charcos instantáneamente', Stats: { strength: 3, agility: 2, defense: 8, magic: 6, luck: 4, mysticism: 5 }, Lifespan: '12-15 years', LifespanEs: '12-15 años' }, { SlimeName: 'Water Slime', SlimeNameEs: 'Slime Acuático', Rarity: 3, Size: 0.8, History: 'Formed from enchanted raindrops, Water Slimes are playful and quick, often found near rivers.', HistoryEs: 'Formados a partir de gotas de lluvia encantadas, los Slimes Acuáticos son juguetones y rápidos, a menudo encontrados cerca de ríos.', Location: 'Lakes, rivers, and rainy forests', LocationEs: 'Lagos, ríos y bosques lluviosos', FavoriteFood: 'Pure spring water and water lilies', FavoriteFoodEs: 'Agua pura de manantial y nenúfares', Ability: 'Can merge with water to become invisible and move swiftly', AbilityEs: 'Puede fusionarse con el agua para volverse invisible y moverse rápidamente', Stats: { strength: 2, agility: 7, defense: 1, magic: 5, luck: 4, mysticism: 3 }, Lifespan: '8-12 years', LifespanEs: '8-12 años' }, { SlimeName: 'Rock Slime', SlimeNameEs: 'Slime Rocoso', Rarity: 4, Size: 1.3, History: 'Rock Slimes are the result of slimes living near mineral-rich caves, slowly absorbing stone and earth.', HistoryEs: 'Los Slimes Rocosos son el resultado de slimes que viven cerca de cuevas ricas en minerales, absorbiendo lentamente piedra y tierra.', Location: 'Caves, rocky hills, and mountain bases', LocationEs: 'Cuevas, colinas rocosas y bases de montañas', FavoriteFood: 'Pebbles and mineral-rich soil', FavoriteFoodEs: 'Guijarros y tierra rica en minerales', Ability: 'Can harden their bodies to become nearly unbreakable for short periods', AbilityEs: 'Puede endurecer su cuerpo para volverse casi irrompible por cortos períodos', Stats: { strength: 8, agility: 1, defense: 9, magic: 2, luck: 3, mysticism: 1 }, Lifespan: '20-30 years', LifespanEs: '20-30 años' }, { SlimeName: 'Fire Slime', SlimeNameEs: 'Slime de Fuego', Rarity: 5, Size: 1.1, History: 'Fire Slimes are born from the embers of ancient volcanoes, carrying a spark of elemental fire within.', HistoryEs: 'Los Slimes de Fuego nacen de las brasas de antiguos volcanes, llevando una chispa de fuego elemental en su interior.', Location: 'Volcanoes, hot springs, and scorched plains', LocationEs: 'Volcanes, aguas termales y llanuras calcinadas', FavoriteFood: 'Charcoal and spicy peppers', FavoriteFoodEs: 'Carbón y pimientos picantes', Ability: 'Can ignite themselves to ward off predators and light dark places', AbilityEs: 'Puede encenderse para ahuyentar a los depredadores e iluminar lugares oscuros', Stats: { strength: 6, agility: 3, defense: 4, magic: 7, luck: 2, mysticism: 6 }, Lifespan: '10-15 years' }, { SlimeName: 'Shadow Slime', SlimeNameEs: 'Slime de Sombra', Rarity: 6, Size: 1.2, History: 'Shadow Slimes are born in places untouched by light, absorbing the darkness around them.', HistoryEs: 'Los Slimes de Sombra nacen en lugares donde la luz nunca llega, absorbiendo la oscuridad a su alrededor.', Location: 'Caverns, abandoned ruins, and deep forests at night', LocationEs: 'Cavernas, ruinas abandonadas y bosques profundos durante la noche', FavoriteFood: 'Shadows and nocturnal insects', FavoriteFoodEs: 'Sombras e insectos nocturnos', Ability: 'Can blend into shadows and become nearly invisible', AbilityEs: 'Puede fundirse con las sombras y volverse casi invisible', Stats: { strength: 5, agility: 8, defense: 3, magic: 9, luck: 6, mysticism: 8 }, Lifespan: '30-40 years', LifespanEs: '30-40 años' }, { SlimeName: 'Forest Slime', SlimeNameEs: 'Slime de Bosque', Rarity: 7, Size: 1.15, History: 'Forest Slimes are the guardians of ancient woods, formed from moss and enchanted leaves.', HistoryEs: 'Los Slimes de Bosque son guardianes de los bosques antiguos, formados de musgo y hojas encantadas.', Location: 'Dense forests, groves, and magical thickets', LocationEs: 'Bosques densos, arboledas y matorrales mágicos', FavoriteFood: 'Moss, leaves, and wildflowers', FavoriteFoodEs: 'Musgo, hojas y flores silvestres', Ability: 'Can heal plants and accelerate their growth', AbilityEs: 'Puede curar plantas y acelerar su crecimiento', Stats: { strength: 4, agility: 6, defense: 5, magic: 8, luck: 5, mysticism: 7 }, Lifespan: '25-35 years', LifespanEs: '25-35 años' }, { SlimeName: 'Beast Slime', SlimeNameEs: 'Slime Bestia', Rarity: 8, Size: 1.4, History: 'Beast Slimes are fierce and wild, believed to have evolved by mimicking the strongest animals in their environment.', HistoryEs: 'Los Slimes Bestia son feroces y salvajes, se cree que evolucionaron imitando a los animales más fuertes de su entorno.', Location: 'Savannahs, jungles, and wild plains', LocationEs: 'Sabanas, selvas y llanuras salvajes', FavoriteFood: 'Raw meat and wild fruits', FavoriteFoodEs: 'Carne cruda y frutas silvestres', Ability: 'Can roar to intimidate foes and temporarily boost their own strength', AbilityEs: 'Puede rugir para intimidar enemigos y aumentar temporalmente su fuerza', Stats: { strength: 9, agility: 7, defense: 7, magic: 3, luck: 8, mysticism: 2 }, Lifespan: '18-25 years', LifespanEs: '18-25 años' }, { SlimeName: 'Lucky Slime', SlimeNameEs: 'Slime de la Suerte', Rarity: 8, Size: 0.95, History: 'Lucky Slimes are said to be born during rare celestial events, bringing fortune to those who find them.', HistoryEs: 'Se dice que los Slimes de la Suerte nacen durante eventos celestiales raros, trayendo fortuna a quienes los encuentran.', Location: 'Rainbow fields, clover patches, and near waterfalls', LocationEs: 'Campos de arcoíris, parches de tréboles y cerca de cascadas', FavoriteFood: 'Four-leaf clovers and golden apples', FavoriteFoodEs: 'Tréboles de cuatro hojas y manzanas doradas', Ability: 'Can increase the luck of nearby creatures and find hidden treasures', AbilityEs: 'Puede aumentar la suerte de criaturas cercanas y encontrar tesoros ocultos', Stats: { strength: 3, agility: 5, defense: 2, magic: 6, luck: 10, mysticism: 4 }, Lifespan: '10-20 years', LifespanEs: '10-20 años' }, { SlimeName: 'Runic Slime', SlimeNameEs: 'Slime Rúnico', Rarity: 9, Size: 1.25, History: 'Runic Slimes are ancient beings, their bodies inscribed with glowing runes of power.', HistoryEs: 'Los Slimes Rúnicos son seres antiguos, sus cuerpos están inscritos con runas brillantes de poder.', Location: 'Ancient temples, rune circles, and magical libraries', LocationEs: 'Templos antiguos, círculos de runas y bibliotecas mágicas', FavoriteFood: 'Enchanted stones and magical scrolls', FavoriteFoodEs: 'Piedras encantadas y pergaminos mágicos', Ability: 'Can cast simple spells and decipher ancient languages', AbilityEs: 'Puede lanzar hechizos simples y descifrar lenguas antiguas', Stats: { strength: 5, agility: 4, defense: 3, magic: 9, luck: 7, mysticism: 10 }, Lifespan: '50-100 years', LifespanEs: '50-100 años' }, { SlimeName: 'Divine Slime', SlimeNameEs: 'Slime Divino', Rarity: 10, Size: 1.5, History: 'Divine Slimes are legendary, said to descend from the heavens during times of great need.', HistoryEs: 'Los Slimes Divinos son legendarios, se dice que descienden de los cielos en tiempos de gran necesidad.', Location: 'Sacred groves, mountaintops, and places of worship', LocationEs: 'Arboledas sagradas, cimas de montañas y lugares de culto', FavoriteFood: 'Nectar from sacred flowers and pure spring water', FavoriteFoodEs: 'Néctar de flores sagradas y agua de manantial pura', Ability: 'Can heal wounds and purify water with a touch', AbilityEs: 'Puede curar heridas y purificar agua con solo tocarla', Stats: { strength: 7, agility: 4, defense: 6, magic: 10, luck: 10, mysticism: 9 }, Lifespan: 'Unknown, possibly eternal', LifespanEs: 'Desconocida, posiblemente eterna' }, { SlimeName: 'Fruit Slime', SlimeNameEs: 'Slime Fruta', Rarity: 5, Size: 1.05, History: 'Born from the essence of vibrant orchards, Fruit Slimes emerged when magical runoff seeped into ancient fruit groves.', HistoryEs: 'Nacidos de la esencia de huertos vibrantes, los Slimes Fruta surgieron cuando la magia se filtró en antiguos huertos de frutas.', Location: 'Orchards, fruit markets, and gardens with sweet-smelling blossoms', LocationEs: 'Huertos, mercados de frutas y jardines con flores fragantes', FavoriteFood: 'Overripe fruits and berry preserves', FavoriteFoodEs: 'Frutas demasiado maduras y conservas de bayas', Ability: 'Can change color based on the last fruit consumed, and releases a sweet aroma that calms nearby creatures', AbilityEs: 'Puede cambiar de color según la última fruta consumida y libera un aroma dulce que calma a las criaturas cercanas', Stats: { strength: 4, agility: 6, defense: 3, magic: 7, luck: 6, mysticism: 5 }, Lifespan: '15-20 years, longer if fed a varied diet of exotic fruits', LifespanEs: '15-20 años, más si se alimenta con una dieta variada de frutas exóticas' }, { SlimeName: 'Ghost Slime', SlimeNameEs: 'Slime Fantasma', Rarity: 7, Size: 1.1, History: 'Ghost Slimes formed when regular slimes wandered into haunted areas and absorbed spectral essence, gaining ethereal properties.', HistoryEs: 'Los Slimes Fantasma se formaron cuando slimes comunes vagaron por zonas embrujadas y absorbieron esencia espectral, obteniendo propiedades etéreas.', Location: 'Abandoned buildings, ancient ruins, and places with strong spiritual energy', LocationEs: 'Edificios abandonados, ruinas antiguas y lugares con fuerte energía espiritual', FavoriteFood: 'Emotions, particularly nostalgia and melancholy', FavoriteFoodEs: 'Emociones, especialmente nostalgia y melancolía', Ability: 'Can phase through solid objects and temporarily become invisible when threatened', AbilityEs: 'Puede atravesar objetos sólidos y volverse invisible temporalmente cuando se siente amenazado', Stats: { strength: 2, agility: 7, defense: 3, magic: 9, luck: 6, mysticism: 8 }, Lifespan: 'Potentially immortal, though they can fade away if they lose their spectral essence', LifespanEs: 'Potencialmente inmortal, aunque pueden desvanecerse si pierden su esencia espectral' }, { SlimeName: 'King Slime', SlimeNameEs: 'Rey Slime', Rarity: 9, Size: 1.6, History: 'The legendary King Slime is said to be born once a century when a slime absorbs royal essence from an ancient crown.', HistoryEs: 'Se dice que el legendario Rey Slime nace una vez cada siglo cuando un slime absorbe la esencia real de una corona antigua.', Location: 'Hidden chambers in royal castles and within the deepest parts of enchanted forests', LocationEs: 'Cámaras ocultas en castillos reales y en las partes más profundas de bosques encantados', FavoriteFood: 'Precious metals and gems, particularly gold and rubies', FavoriteFoodEs: 'Metales preciosos y gemas, especialmente oro y rubíes', Ability: 'Can command lesser slimes and temporarily grow to massive size, becoming nearly invulnerable', AbilityEs: 'Puede comandar slimes menores y crecer temporalmente a un tamaño masivo, volviéndose casi invulnerable', Stats: { strength: 8, agility: 4, defense: 8, magic: 7, luck: 7, mysticism: 9 }, Lifespan: 'Over 200 years, with some specimens reported to live for millennia', LifespanEs: 'Más de 200 años, con algunos ejemplares reportados viviendo milenios' }, { SlimeName: 'Golden Slime', SlimeNameEs: 'Slime Dorado', Rarity: 10, Size: 1.35, History: 'Golden Slimes are incredibly rare mutations that occur when a slime is exposed to concentrated alchemical gold for generations.', HistoryEs: 'Los Slimes Dorados son mutaciones increíblemente raras que ocurren cuando un slime es expuesto a oro alquímico concentrado durante generaciones.', Location: 'Ancient treasure vaults, alchemist laboratories, and the hearts of mountains rich with gold deposits', LocationEs: 'Antiguas bóvedas de tesoros, laboratorios de alquimistas y el corazón de montañas ricas en oro', FavoriteFood: 'Gold dust and magical essences', FavoriteFoodEs: 'Polvo de oro y esencias mágicas', Ability: 'Turns objects it consumes partially to gold and can detect precious metals at great distances', AbilityEs: 'Convierte parcialmente en oro los objetos que consume y puede detectar metales preciosos a grandes distancias', Stats: { strength: 6, agility: 3, defense: 9, magic: 8, luck: 10, mysticism: 8 }, Lifespan: 'Virtually immortal as long as they consume small amounts of gold regularly', LifespanEs: 'Prácticamente inmortal mientras consuma pequeñas cantidades de oro regularmente' }]; SlimeInfo = sortSlimesByRarity(SlimeInfo); slimes = SlimeInfo.map(function (slime, index) { var slimeName = slime.SlimeName.replace(/\s+/g, ''); return slimeName; }); var slimeNames = SlimeInfo.map(function (slime) { return slime.SlimeName; }); var slimeNamesEs = SlimeInfo.map(function (slime) { return slime.SlimeNameEs || slime.SlimeName; }); var rarityValues = SlimeInfo.map(function (slime) { return slime.Rarity; }); var histories = SlimeInfo.map(function (slime) { return slime.History; }); var locations = SlimeInfo.map(function (slime) { return slime.Location; }); var favoriteFoods = SlimeInfo.map(function (slime) { return slime.FavoriteFood; }); var abilities = SlimeInfo.map(function (slime) { return slime.Ability; }); var stats = SlimeInfo.map(function (slime) { return slime.Stats; }); var lifespans = SlimeInfo.map(function (slime) { return slime.Lifespan; }); var slimeNameText = new Text2(slimeNames[currentSlimeIndex], { size: 100, fill: 0xFFFFFF }); slimeNameText.anchor.set(0.5, 0.5); slimeNameText.x = 0; slimeNameText.y = interfaz.height / 2; var slime = new Slime(); var centerX = bg.width / 2; var centerY = bg.height / 2 + 220; slime.setBasePosition(centerX, centerY); slime.alpha = 1; slime.scaleX = 1; slime.scaleY = 1; var musicTracks = ['BGSong', 'BGSong2', 'BGSong3', 'BGSong4', 'BGSong5', 'BGsong6']; var currentMusicIndex = -1; var musicNameOverlay = new MusicNameOverlay(); function playRandomMusic() { var newIndex; do { newIndex = Math.floor(Math.random() * musicTracks.length); } while (newIndex === currentMusicIndex && musicTracks.length > 1); currentMusicIndex = newIndex; LK.playMusic(musicTracks[currentMusicIndex]); if (musicNameOverlay) { musicNameOverlay.showRandomName(currentLanguage); } } playRandomMusic(); LK.setInterval(playRandomMusic, 100000); var infoPanelHeight = bgMenu.height - interfaz.height - 40; var infoPanelWidth = bgMenu.width; var infoPanelY = bgMenu.y + interfaz.height + 20; var infoPanelX = bgMenu.x + (bgMenu.width - infoPanelWidth) / 2; var infoPanel = new Container(); infoPanel.x = infoPanelX; infoPanel.y = infoPanelY; var infoCategories = [{ titleId: "rarity", get: function get(i) { var rarityValue = SlimeInfo[i].Rarity; this.currentRarityValue = rarityValue; return translations.rarityNames[rarityValue][currentLanguage]; } }, { titleId: "size", get: function get(i) { var sizeValue = SlimeInfo[i].Size || 1.0; var sizeKey; if (sizeValue <= 0.8) { sizeKey = "tiny"; } else if (sizeValue <= 0.95) { sizeKey = "small"; } else if (sizeValue <= 1.1) { sizeKey = "medium"; } else if (sizeValue <= 1.3) { sizeKey = "large"; } else if (sizeValue <= 1.5) { sizeKey = "veryLarge"; } else { sizeKey = "enormous"; } var sizeDescription = translations.sizeDescriptions[sizeKey][currentLanguage]; return sizeDescription + " (" + sizeValue.toFixed(2) + "x scale)"; } }, { titleId: "history", get: function get(i) { return currentLanguage === 'en' ? SlimeInfo[i].History : SlimeInfo[i].HistoryEs || SlimeInfo[i].History; } }, { titleId: "location", get: function get(i) { return currentLanguage === 'en' ? SlimeInfo[i].Location : SlimeInfo[i].LocationEs || SlimeInfo[i].Location; } }, { titleId: "favoriteFood", get: function get(i) { return currentLanguage === 'en' ? SlimeInfo[i].FavoriteFood : SlimeInfo[i].FavoriteFoodEs || SlimeInfo[i].FavoriteFood; } }, { titleId: "ability", get: function get(i) { return currentLanguage === 'en' ? SlimeInfo[i].Ability : SlimeInfo[i].AbilityEs || SlimeInfo[i].Ability; } }, { titleId: "stats", get: function get(i) { var s = SlimeInfo[i].Stats; function formatStat(name, value) { var barChars = "■".repeat(value); var emptyChars = "□".repeat(10 - value); var translatedName = translations.statNames[name.toLowerCase()][currentLanguage] || name; return translatedName + ": " + value + " [" + barChars + emptyChars + "]"; } var statText = ""; statText += formatStat("strength", s.strength) + "\n"; statText += formatStat("agility", s.agility) + "\n"; statText += formatStat("defense", s.defense) + "\n"; statText += formatStat("magic", s.magic) + "\n"; statText += formatStat("luck", s.luck) + "\n"; statText += formatStat("mysticism", s.mysticism); return statText; } }, { titleId: "lifespan", get: function get(i) { return currentLanguage === 'en' ? SlimeInfo[i].Lifespan : SlimeInfo[i].LifespanEs || SlimeInfo[i].Lifespan; } }]; var infoTextContainer = new Container(); infoTextContainer.x = 30; infoTextContainer.y = 30; function updateInfoPanel() { infoTextContainer.removeChildren(); var y = 0; for (var c = 0; c < infoCategories.length; c++) { if (c > 0) { y += 80; } var titleColors = { rarity: 0xFFD700, history: 0xCF9FFF, location: 0x98FB98, favoriteFood: 0xFF7F50, ability: 0x00BFFF, stats: 0xFF1493, lifespan: 0x00FA9A }; var categoryId = infoCategories[c].titleId; var titleColor = titleColors[categoryId] || 0xFFF7B2; var translatedTitle = translations.categoryTitles[categoryId][currentLanguage] || categoryId; var titleText = new Text2(translatedTitle, { size: 110, fill: titleColor, font: "GillSans-Bold", align: "center", dropShadow: true, dropShadowColor: 0x000000, dropShadowDistance: 3, dropShadowAlpha: 0.5 }); titleText.anchor.set(0.5, 0); titleText.x = infoPanelWidth / 2 - 30; titleText.y = y; infoTextContainer.addChild(titleText); y += titleText.height + 6; var categoryId = infoCategories[c].titleId; var infoContent = infoCategories[c].get(currentSlimeIndex); var wrappedText = infoContent; if (categoryId !== "stats") { wrappedText = wrapText(infoContent, infoPanelWidth - 60, 85); } var textColors = { rarity: 0xFFFACD, history: 0xE6E6FA, location: 0xF0FFF0, favoriteFood: 0xFFE4E1, ability: 0xE0FFFF, stats: 0xFFE4E1, lifespan: 0xF0FFFF }; var textColor = textColors[categoryId] || 0xFFFFFF; var infoText = new Text2(wrappedText, { size: 85, fill: textColor, font: "GillSans", align: categoryId === "stats" ? "left" : "center", dropShadow: true, dropShadowColor: 0x333333, dropShadowDistance: 2, dropShadowAlpha: 0.3 }); if (categoryId === "stats") { infoText.anchor.set(0.5, 0); infoText.x = infoPanelWidth / 2 - 30; } else { infoText.anchor.set(0.5, 0); infoText.x = infoPanelWidth / 2 - 30; } infoText.y = y + 20; infoTextContainer.addChild(infoText); if (categoryId === "rarity" && infoCategories[c].currentRarityValue) { var starContainer = new Container(); starContainer.x = infoPanelWidth / 2 - 30; starContainer.y = y + infoText.height + 40; var rarityValue = infoCategories[c].currentRarityValue; var starSpacing = 110, totalWidth = (rarityValue - 1) * starSpacing; var startX = -totalWidth / 2; for (var s = 0; s < rarityValue; s++) { var star = new Star(); star.x = startX + s * starSpacing; star.y = 20; star.alpha = 0; star.scale.x = star.scale.y = 0.5; star.setColorByRarity(rarityValue); starContainer.addChild(star); (function (targetStar, delay) { LK.setTimeout(function () { tween(targetStar, { alpha: 1, scaleX: 1, scaleY: 1 }, { duration: 400, easing: tween.easeOut }); }, delay); })(star, s * 200); } infoTextContainer.addChild(starContainer); y += 80; } y += infoText.height + 24; } infoTextContainer.totalHeight = y; } updateInfoPanel(); var scrollOffset = 0; var maxScroll = 0; function updateScrollLimits() { maxScroll = Math.max(0, infoTextContainer.totalHeight - infoPanelHeight + 40 + 60); if (scrollOffset < 0) { scrollOffset = 0; } if (scrollOffset > maxScroll) { scrollOffset = maxScroll; } infoTextContainer.y = 30 - scrollOffset; } updateScrollLimits(); var isScrolling = false, lastScrollY = 0, scrollVelocity = 0, lastScrollTime = 0, scrollTweenActive = false, scrollTracker = []; infoPanel.interactive = true; infoPanel.down = function (x, y, obj) { isScrolling = true; lastScrollY = y; lastScrollTime = Date.now(); scrollTracker = []; }; infoPanel.move = function (x, y, obj) { if (isScrolling) { var dy = y - lastScrollY; scrollOffset -= dy; updateScrollLimits(); lastScrollY = y; } }; infoPanel.up = function (x, y, obj) { if (isScrolling) { isScrolling = false; updateScrollLimits(); } }; function createButtonHandler(direction) { return function (x, y, obj) { changeSlime(direction); updateInfoPanel(); updateScrollLimits(); }; } leftButton.down = createButtonHandler('prev'); rightButton.down = createButtonHandler('next'); function updateSlimeAndInfo() { var slimeData = SlimeInfo[currentSlimeIndex]; var displayName = slimeData['SlimeName' + (currentLanguage === 'es' ? 'Es' : '')] || slimeData.SlimeName; slimeNameText.setText(displayName); tween.stop(slime); tween(slime, { alpha: 0, scaleX: 0.8, scaleY: 0.8, rotation: -0.1 }, { duration: 300, easing: tween.easeOut, onFinish: function onFinish() { var currentSlimeName = slimes[currentSlimeIndex]; if (slime.slimeAsset) { slime.removeChild(slime.slimeAsset); } slime.slimeAsset = slime.attachAsset(currentSlimeName, { anchorX: 0.5, anchorY: 0.5 }); if (currentSlimeName === 'ClassicSlime') { var randomR = Math.floor(Math.random() * 256); var randomG = Math.floor(Math.random() * 256); var randomB = Math.floor(Math.random() * 256); var randomTint = randomR << 16 | randomG << 8 | randomB; slime.slimeAsset.tint = randomTint; if (!isDayTime) { var smoothNightTint = multiplyColors(randomTint, 0x606080); slime.slimeAsset.tint = smoothNightTint; } } else if (!isDayTime && slime.slimeAsset) { slime.slimeAsset.tint = darkTint; } var sizeMultiplier = SlimeInfo[currentSlimeIndex].Size || 1.0; slime.slimeAsset.scale.set(slime.baseScale * sizeMultiplier); slime.x = slime.baseX; var yOffset = (sizeMultiplier - 1.0) * slime.slimeAsset.height * slime.baseScale * 0.5; slime.y = slime.baseY - yOffset; slime.alpha = 0; slime.scaleX = 0.3; slime.scaleY = 0.3; slime.rotation = 0.1; tween(slime, { alpha: 1, scaleX: 1, scaleY: 1, rotation: 0 }, { duration: 400, easing: tween.easeOut, onFinish: function onFinish() { tween(slime, { scaleX: 0.8, scaleY: 0.8 }, { duration: 500, easing: tween.elasticOut, onFinish: function onFinish() {} }); } }); } }); updateInfoPanel(); scrollOffset = 0; updateScrollLimits(); infoTextContainer.alpha = 0; tween(infoTextContainer, { alpha: 1 }, { duration: 400, easing: tween.easeOut }); } function changeSlime(direction) { currentSlimeIndex = direction === 'next' ? (currentSlimeIndex + 1) % slimes.length : (currentSlimeIndex - 1 + slimes.length) % slimes.length; updateSlimeAndInfo(); } currentSortOrder = 0; SlimeInfo.sort(function (a, b) { return a.Rarity - b.Rarity; }); slimes = SlimeInfo.map(function (slime) { var slimeName = slime.SlimeName.replace(/\s+/g, ''); return slimeName; }); slimeNames = SlimeInfo.map(function (slime) { return slime.SlimeName; }); rarityValues = SlimeInfo.map(function (slime) { return slime.Rarity; }); currentSlimeIndex = 0; updateSlimeAndInfo(); updateLanguageUI(); isDayTime = checkDayTime(); applyDayNightEffect(); LK.setInterval(function () { var newIsDayTime = checkDayTime(); if (newIsDayTime !== isDayTime) { isDayTime = newIsDayTime; applyDayNightEffect(); } }, 60000); function applyDayNightEffect() { if (isDayTime) { bg.tint = 0xFFFFFF; if (slime && slime.slimeAsset) { slime.slimeAsset.tint = 0xFFFFFF; } } else { bg.tint = darkTint; if (slime && slime.slimeAsset) { slime.slimeAsset.tint = darkTint; } } } gameContent.addChild(bgMenu); gameContent.addChild(infoPanel); infoPanel.addChild(infoTextContainer); gameContent.addChild(bg); gameContent.addChild(interfaz); interfaz.addChild(leftButton); interfaz.addChild(rightButton); interfaz.addChild(slimeNameText); interfaz.addChild(sortButton); interfaz.addChild(sortText); interfaz.addChild(languageButton); interfaz.addChild(languageText); gameContent.addChild(slime); gameContent.addChild(musicNameOverlay); game.addChild(gameContent); game.addChild(startScreen);
===================================================================
--- original.js
+++ change.js
@@ -121,27 +121,8 @@
y: 2732 / 2 - 300,
scaleX: 1.2,
scaleY: 1.2
});
- titleImage.interactive = true;
- titleImage.isDragging = false;
- titleImage.dragOffsetX = 0;
- titleImage.dragOffsetY = 0;
- titleImage.down = function (x, y, obj) {
- titleImage.isDragging = true;
- titleImage.dragOffsetX = titleImage.x - x;
- titleImage.dragOffsetY = titleImage.y - y;
- LK.getSound('InterfazSound').play();
- };
- titleImage.move = function (x, y, obj) {
- if (titleImage.isDragging) {
- titleImage.x = x + titleImage.dragOffsetX;
- titleImage.y = y + titleImage.dragOffsetY;
- }
- };
- titleImage.up = function () {
- titleImage.isDragging = false;
- };
self.interactive = true;
self.down = function () {
if (self.onStart) {
if (autoStartTimer) {
@@ -182,8 +163,17 @@
var g = Math.floor(g1 * g2 / 255);
var b = Math.floor(b1 * b2 / 255);
return r << 16 | g << 8 | b;
}
+var transitionOverlay = new Container();
+var transitionBg = LK.getAsset('transition', {
+ anchorX: 0,
+ anchorY: 0,
+ width: 2048,
+ height: 2732,
+ alpha: 0
+});
+transitionOverlay.addChild(transitionBg);
var gameContent = new Container();
gameContent.y = 0;
gameContent.alpha = 0;
gameContent.scale.set(0.5);
@@ -209,15 +199,43 @@
startScreen.down();
}
}, 10000);
startScreen.onStart = function () {
- gameContent.alpha = 1;
- gameContent.scaleX = 1;
- gameContent.scaleY = 1;
- if (startScreen && startScreen.parent) {
- game.removeChild(startScreen);
- startScreen = null;
+ // Add transition overlay if not already added
+ if (!transitionOverlay.parent) {
+ game.addChild(transitionOverlay);
}
+ // Fade in the black overlay
+ tween(transitionBg, {
+ alpha: 1
+ }, {
+ duration: 400,
+ easing: tween.easeOut,
+ onFinish: function onFinish() {
+ // Make game content full size but still invisible behind the overlay
+ gameContent.alpha = 1;
+ gameContent.scaleX = 1;
+ gameContent.scaleY = 1;
+ // Remove start screen
+ if (startScreen && startScreen.parent) {
+ game.removeChild(startScreen);
+ startScreen = null;
+ }
+ // Fade out the black overlay to reveal the game
+ tween(transitionBg, {
+ alpha: 0
+ }, {
+ duration: 600,
+ easing: tween.easeIn,
+ onFinish: function onFinish() {
+ // Remove transition overlay when done
+ if (transitionOverlay && transitionOverlay.parent) {
+ game.removeChild(transitionOverlay);
+ }
+ }
+ });
+ }
+ });
};
var interfaz = LK.getAsset('Interfaz', {
anchorX: 0.5,
anchorY: 0,
Star cartoon. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Un slime verde RPG con estilo suave y simple. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Un slime rojo prendido fuego RPG con estilo suave y simple. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Un slime RPG amarillo y divino con estilo suave y simple. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Un slime fantasmal RPG con estilo suave y simple. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Un slime blanco con una moneda brillante en la frente RPG con estilo suave y simple. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Un slime gris RPG con rocas en su espalda. Estilo suave y simple. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Un slime RPG nevado con estilo suave y simple. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Un slime de agua RPG con estilo suave y simple. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Un slime bestia peludo RPG con estilo suave y simple. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Un slime morado con runas magicas RPG. Estilo suave y simple. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Un slime angelical RPG con estilo suave y simple. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Fullscreen medieval landscape banner, 16:9, high definition, for a game titled "Slime Bestiary". Medieval forest with multiple colored slimes. No text on banner!