User prompt
Muestra las barras de vida después de que inicie el combate, no en el menú, en el menú has un fondo en dónde los personajes aparezcan luchando en un vacío y que muestre el puntaje de la anterior partida ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Agrega partículas para cuando estés defendiendo, cuando ataques con el golpe o con patada
User prompt
Que la inteligencia del enemigo sea mayor dependiendo la dificultad pero que aún así pueda moverse y luchar de manera inteligente
User prompt
Que el enemigo se pueda acercar y atacarte, esquivar y defenderse
User prompt
Que puedas elegir entre el tiburón, el lobo y el lagarto y que no solo te ponga al tiburon
User prompt
Arregla que al seleccionar un personaje no te de otro totalmente diferente, que el menú se puedan editar sus assets y que se puedan poner más variedades de enemigos
User prompt
Cada que ganes que aparezca un letrero de k.o de que ganaste y que te dé la opción de seguir luchando con otros enemigos o parar ahí, que haya un total de 20 enemigos y que aparezcan de manera aleatoria pero con sus nombres
User prompt
Que la barra de esta mina disminuya de manera que si atacas mucho te canses y para recuperarla necesites no atacar, que la vida sea mucho mayor para que el combate dure una buena cantidad pero que no sea excesiva
User prompt
Que los botones estén el centro, más grandes y un poco más separados , que el botón de defender reduzca el daño que recibas y que las patadas sean algo lentas pero con un poco más de daño
User prompt
La línea gris que también se vaya con los personajes y que el fondo sea más grande y deja libre la parte de abajo para agregar los botones y que aparezcan en la pantalla
User prompt
Elimina los botones de saltar y morder que sean reemplazados por la cruceta y que tendrán las siguientes funciones, arriba saltar, izquierda ir para la izquierda, derecha para ir a la derecha y abajo para agacharse, necesito que dónde están los personajes se encuentre más centrado de la pantalla para que así puedas poner la cruceta en la parte inferior central izquierda y agregues los botones para golpear, patear y defenderse
Code edit (1 edits merged)
Please save this source code
User prompt
Necesito que implementos las diferentes habilidades y que sean únicas de cada personaje y que no se repitan, también necesito que hagas una cruceta para que te puedas mover de izquierda a derecha y que puedas saltar y agacharte sin necesidad de que la cruceta este hasta la esquina derecha, necesito que esté en el centro izquierdo
User prompt
Necesito que hagas una cruceta , para que puedas moverte de un lado al otro, saltar y agacharse, que el enemigo sea un poco más agresivo y que la cruceta no esté hasta la esquina
Code edit (1 edits merged)
Please save this source code
User prompt
Necesito que los botones de acciones para pelear aparezcan después de iniciar el juego ya que en el menú estorban, también que los botones no estén hasta la esquina derecha, pueden estar en la parte superior central y con separación y algo grandes
User prompt
Necesito que separes un poco los botones del menu y que los botones de movimiento se vean como una cruceta incluyendo un botón para saltar y agacharse y que cada personaje tenga habilidades diferentes por ejemplo el tiburón que lance aguas, que el lagarto se mueva más rápido y que el lobo pueda morder, también necesito que las barras de vida del enemigo sean más altas y que estén del lado del oponente
User prompt
Que los botones de pelear y defenderse aparezcan después del menu, junto a botones en dónde tú personaje se pueda mover y que el botón de atacar no sea el único que también haya botones de patada o agarres que salen al enemigo y que el enemigo también se pueda mover y atacar de manera inteligente dependiendo la dificultad que se podra elegir en el inicio
User prompt
Al momento de iniciar la batalla que inicie un contador y que haya botones en la parte superior para que en móvil se puedan seleccionar al igual Sprites para cada acción que selecciones, también que el oponente tenga una barra de vida y el contador para acabar la pelea se pueda seleccionar sin límite o con un límite de 90 segundos
User prompt
Faltan botones para las acciones y el menú general para iniciar un combate
Code edit (1 edits merged)
Please save this source code
User prompt
Furry Fighter Arena
User prompt
Se me ocurre que los jefes y combatientes tengan pinta de animales furros como tiburones fuertes, lagartos etc,
User prompt
Please continue polishing my design document.
Initial prompt
Se me ocurre un juego de peleas rítmicas en dónde se deban de usar botones al ritmo sonoro con jefes con soundtrack memorables y personajes icónicos
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var Button = Container.expand(function (assetName, text) { var self = Container.call(this); var buttonGraphics = self.attachAsset(assetName, { anchorX: 0.5, anchorY: 0.5 }); var buttonText = new Text2(text, { size: 40, fill: 0xFFFFFF }); buttonText.anchor.set(0.5, 0.5); self.addChild(buttonText); self.down = function (x, y, obj) { tween(buttonGraphics, { scaleX: 0.9, scaleY: 0.9 }, { duration: 100, onFinish: function onFinish() { tween(buttonGraphics, { scaleX: 1, scaleY: 1 }, { duration: 100 }); } }); }; return self; }); var CharacterCard = Container.expand(function (characterType, name) { var self = Container.call(this); self.characterType = characterType; self.isSelected = false; var cardBg = self.attachAsset('characterCard', { anchorX: 0.5, anchorY: 0.5 }); var character = self.attachAsset(characterType + 'Fighter', { anchorX: 0.5, anchorY: 0.8, y: -20 }); var nameText = new Text2(name, { size: 30, fill: 0xFFFFFF }); nameText.anchor.set(0.5, 0.5); nameText.y = 100; self.addChild(nameText); self.setSelected = function (selected) { self.isSelected = selected; if (selected) { cardBg.tint = 0xf39c12; tween(cardBg, { scaleX: 1.1, scaleY: 1.1 }, { duration: 200 }); } else { cardBg.tint = 0xFFFFFF; tween(cardBg, { scaleX: 1, scaleY: 1 }, { duration: 200 }); } }; self.down = function (x, y, obj) { if (gameState === 'characterSelect') { selectedCharacter = self.characterType; for (var i = 0; i < characterCards.length; i++) { characterCards[i].setSelected(characterCards[i] === self); } } }; return self; }); var Fighter = Container.expand(function (isPlayer) { var self = Container.call(this); self.isPlayer = isPlayer || false; self.maxHealth = 100; self.health = self.maxHealth; self.maxStamina = 100; self.stamina = self.maxStamina; self.attackPower = 20; self.isBlocking = false; self.isAttacking = false; self.canAttack = true; self.staminaRegenRate = 1; var assetName = 'playerFighter'; if (isPlayer && selectedCharacter) { assetName = selectedCharacter + 'Fighter'; } else if (!isPlayer) { assetName = 'enemyFighter'; } var fighterGraphics = self.attachAsset(assetName, { anchorX: 0.5, anchorY: 1 }); self.attack = function () { if (!self.canAttack || self.stamina < 20) return false; self.isAttacking = true; self.canAttack = false; self.stamina -= 20; tween(fighterGraphics, { scaleX: 1.2, scaleY: 0.9 }, { duration: 100, onFinish: function onFinish() { tween(fighterGraphics, { scaleX: 1, scaleY: 1 }, { duration: 100 }); } }); LK.getSound('punch').play(); LK.setTimeout(function () { self.isAttacking = false; self.canAttack = true; }, 300); return true; }; self.block = function () { if (self.stamina < 10) return false; self.isBlocking = true; self.stamina -= 10; tween(fighterGraphics, { tint: 0x3498db }, { duration: 200, onFinish: function onFinish() { tween(fighterGraphics, { tint: 0xffffff }, { duration: 200 }); } }); LK.getSound('block').play(); LK.setTimeout(function () { self.isBlocking = false; }, 400); return true; }; self.specialAttack = function () { if (self.stamina < 50) return false; self.stamina -= 50; tween(fighterGraphics, { scaleX: 1.5, scaleY: 1.5, tint: 0xffd700 }, { duration: 300, onFinish: function onFinish() { tween(fighterGraphics, { scaleX: 1, scaleY: 1, tint: 0xffffff }, { duration: 300 }); } }); LK.getSound('special').play(); return true; }; self.takeDamage = function (damage) { if (self.isBlocking) { damage = Math.floor(damage * 0.3); } self.health -= damage; if (self.health < 0) self.health = 0; LK.effects.flashObject(self, 0xff0000, 200); tween(fighterGraphics, { x: fighterGraphics.x + (self.isPlayer ? -20 : 20) }, { duration: 100, onFinish: function onFinish() { tween(fighterGraphics, { x: 0 }, { duration: 100 }); } }); }; self.update = function () { if (self.stamina < self.maxStamina) { self.stamina += self.staminaRegenRate; if (self.stamina > self.maxStamina) self.stamina = self.maxStamina; } }; return self; }); var HealthBar = Container.expand(function (maxValue) { var self = Container.call(this); self.maxValue = maxValue; self.currentValue = maxValue; var background = self.attachAsset('healthBarBg', { anchorX: 0, anchorY: 0 }); var bar = self.attachAsset('healthBar', { anchorX: 0, anchorY: 0 }); self.setValue = function (value) { self.currentValue = value; var percentage = value / self.maxValue; bar.scaleX = percentage; if (percentage > 0.6) { bar.tint = 0x2ecc71; } else if (percentage > 0.3) { bar.tint = 0xf39c12; } else { bar.tint = 0xe74c3c; } }; return self; }); var StaminaBar = Container.expand(function (maxValue) { var self = Container.call(this); self.maxValue = maxValue; self.currentValue = maxValue; var background = self.attachAsset('staminaBarBg', { anchorX: 0, anchorY: 0 }); var bar = self.attachAsset('staminaBar', { anchorX: 0, anchorY: 0 }); self.setValue = function (value) { self.currentValue = value; var percentage = value / self.maxValue; bar.scaleX = percentage; }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x2c3e50 }); /**** * Game Code ****/ var gameState = 'menu'; var roundTimer = 60; var roundStartTime = 0; var selectedCharacter = 'shark'; var characterCards = []; var menuContainer = game.addChild(new Container()); var characterSelectContainer = game.addChild(new Container()); var gameplayContainer = game.addChild(new Container()); var titleText = new Text2('FURRY FIGHTER ARENA', { size: 80, fill: 0xFFFFFF }); titleText.anchor.set(0.5, 0.5); titleText.x = 2048 / 2; titleText.y = 600; menuContainer.addChild(titleText); var startButton = new Button('menuButton', 'START COMBAT'); startButton.x = 2048 / 2; startButton.y = 1200; menuContainer.addChild(startButton); startButton.down = function (x, y, obj) { if (gameState === 'menu') { gameState = 'characterSelect'; menuContainer.visible = false; characterSelectContainer.visible = true; } }; var characterSelectTitle = new Text2('SELECT YOUR FIGHTER', { size: 60, fill: 0xFFFFFF }); characterSelectTitle.anchor.set(0.5, 0.5); characterSelectTitle.x = 2048 / 2; characterSelectTitle.y = 400; characterSelectContainer.addChild(characterSelectTitle); var sharkCard = new CharacterCard('shark', 'SHARK'); sharkCard.x = 2048 / 2 - 300; sharkCard.y = 1000; characterSelectContainer.addChild(sharkCard); characterCards.push(sharkCard); var lizardCard = new CharacterCard('lizard', 'LIZARD'); lizardCard.x = 2048 / 2; lizardCard.y = 1000; characterSelectContainer.addChild(lizardCard); characterCards.push(lizardCard); var wolfCard = new CharacterCard('wolf', 'WOLF'); wolfCard.x = 2048 / 2 + 300; wolfCard.y = 1000; characterSelectContainer.addChild(wolfCard); characterCards.push(wolfCard); sharkCard.setSelected(true); var fightButton = new Button('menuButton', 'FIGHT!'); fightButton.x = 2048 / 2; fightButton.y = 1600; characterSelectContainer.addChild(fightButton); fightButton.down = function (x, y, obj) { if (gameState === 'characterSelect') { gameState = 'playing'; characterSelectContainer.visible = false; gameplayContainer.visible = true; roundTimer = 60; } }; characterSelectContainer.visible = false; gameplayContainer.visible = false; var arena = gameplayContainer.addChild(LK.getAsset('arena', { anchorX: 0.5, anchorY: 1, x: 2048 / 2, y: 2732 - 200 })); var playerFighter = gameplayContainer.addChild(new Fighter(true)); playerFighter.x = 2048 / 2 - 300; playerFighter.y = 2732 - 200; var enemyFighter = gameplayContainer.addChild(new Fighter(false)); enemyFighter.x = 2048 / 2 + 300; enemyFighter.y = 2732 - 200; var playerHealthBar = new HealthBar(100); playerHealthBar.x = 100; playerHealthBar.y = 100; LK.gui.topLeft.addChild(playerHealthBar); var enemyHealthBar = new HealthBar(100); enemyHealthBar.x = 100; enemyHealthBar.y = 100; LK.gui.topRight.addChild(enemyHealthBar); var playerStaminaBar = new StaminaBar(100); playerStaminaBar.x = 100; playerStaminaBar.y = 150; LK.gui.topLeft.addChild(playerStaminaBar); var enemyStaminaBar = new StaminaBar(100); enemyStaminaBar.x = 100; enemyStaminaBar.y = 150; LK.gui.topRight.addChild(enemyStaminaBar); var timerText = new Text2('60', { size: 80, fill: 0xFFFFFF }); timerText.anchor.set(0.5, 0); LK.gui.top.addChild(timerText); var scoreText = new Text2('Score: 0', { size: 50, fill: 0xFFFFFF }); scoreText.anchor.set(0.5, 0); scoreText.y = 100; LK.gui.top.addChild(scoreText); var attackButton = new Button('attackButton', 'ATTACK'); attackButton.x = 200; attackButton.y = 100; LK.gui.bottomLeft.addChild(attackButton); var blockButton = new Button('blockButton', 'BLOCK'); blockButton.x = 200; blockButton.y = 200; LK.gui.bottomLeft.addChild(blockButton); var specialButton = new Button('specialButton', 'SPECIAL'); specialButton.x = 200; specialButton.y = 300; LK.gui.bottomLeft.addChild(specialButton); attackButton.down = function (x, y, obj) { if (gameState !== 'playing') return; if (playerFighter.attack()) { var distance = Math.abs(playerFighter.x - enemyFighter.x); if (distance < 350) { var damage = playerFighter.attackPower; enemyFighter.takeDamage(damage); } } }; blockButton.down = function (x, y, obj) { if (gameState !== 'playing') return; playerFighter.block(); }; specialButton.down = function (x, y, obj) { if (gameState !== 'playing') return; if (playerFighter.specialAttack()) { var distance = Math.abs(playerFighter.x - enemyFighter.x); if (distance < 400) { var damage = playerFighter.attackPower * 2; enemyFighter.takeDamage(damage); } } }; var enemyAI = { nextActionTime: 0, actionCooldown: 1000, update: function update() { if (gameState !== 'playing') return; var currentTime = Date.now(); if (currentTime < this.nextActionTime) return; var distance = Math.abs(playerFighter.x - enemyFighter.x); var action = Math.random(); if (distance < 350) { if (action < 0.4 && enemyFighter.canAttack) { if (enemyFighter.attack()) { playerFighter.takeDamage(enemyFighter.attackPower); } } else if (action < 0.7) { enemyFighter.block(); } else if (action < 0.9 && enemyFighter.stamina >= 50) { if (enemyFighter.specialAttack()) { playerFighter.takeDamage(enemyFighter.attackPower * 2); } } } this.nextActionTime = currentTime + this.actionCooldown + Math.random() * 1000; } }; function checkGameEnd() { if (playerFighter.health <= 0) { gameState = 'gameOver'; LK.showGameOver(); return true; } if (enemyFighter.health <= 0) { gameState = 'victory'; LK.setScore(LK.getScore() + 100); LK.showYouWin(); return true; } if (roundTimer <= 0) { gameState = 'timeUp'; if (playerFighter.health > enemyFighter.health) { LK.setScore(LK.getScore() + 50); LK.showYouWin(); } else { LK.showGameOver(); } return true; } return false; } LK.playMusic('battleMusic'); game.update = function () { if (gameState === 'playing') { if (LK.ticks % 60 === 0) { roundTimer--; timerText.setText(roundTimer.toString()); if (roundTimer <= 10) { timerText.tint = 0xe74c3c; } } playerHealthBar.setValue(playerFighter.health); enemyHealthBar.setValue(enemyFighter.health); playerStaminaBar.setValue(playerFighter.stamina); enemyStaminaBar.setValue(enemyFighter.stamina); scoreText.setText('Score: ' + LK.getScore()); enemyAI.update(); checkGameEnd(); } };
===================================================================
--- original.js
+++ change.js
@@ -35,8 +35,58 @@
});
};
return self;
});
+var CharacterCard = Container.expand(function (characterType, name) {
+ var self = Container.call(this);
+ self.characterType = characterType;
+ self.isSelected = false;
+ var cardBg = self.attachAsset('characterCard', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ var character = self.attachAsset(characterType + 'Fighter', {
+ anchorX: 0.5,
+ anchorY: 0.8,
+ y: -20
+ });
+ var nameText = new Text2(name, {
+ size: 30,
+ fill: 0xFFFFFF
+ });
+ nameText.anchor.set(0.5, 0.5);
+ nameText.y = 100;
+ self.addChild(nameText);
+ self.setSelected = function (selected) {
+ self.isSelected = selected;
+ if (selected) {
+ cardBg.tint = 0xf39c12;
+ tween(cardBg, {
+ scaleX: 1.1,
+ scaleY: 1.1
+ }, {
+ duration: 200
+ });
+ } else {
+ cardBg.tint = 0xFFFFFF;
+ tween(cardBg, {
+ scaleX: 1,
+ scaleY: 1
+ }, {
+ duration: 200
+ });
+ }
+ };
+ self.down = function (x, y, obj) {
+ if (gameState === 'characterSelect') {
+ selectedCharacter = self.characterType;
+ for (var i = 0; i < characterCards.length; i++) {
+ characterCards[i].setSelected(characterCards[i] === self);
+ }
+ }
+ };
+ return self;
+});
var Fighter = Container.expand(function (isPlayer) {
var self = Container.call(this);
self.isPlayer = isPlayer || false;
self.maxHealth = 100;
@@ -47,9 +97,15 @@
self.isBlocking = false;
self.isAttacking = false;
self.canAttack = true;
self.staminaRegenRate = 1;
- var fighterGraphics = self.attachAsset(isPlayer ? 'playerFighter' : 'enemyFighter', {
+ var assetName = 'playerFighter';
+ if (isPlayer && selectedCharacter) {
+ assetName = selectedCharacter + 'Fighter';
+ } else if (!isPlayer) {
+ assetName = 'enemyFighter';
+ }
+ var fighterGraphics = self.attachAsset(assetName, {
anchorX: 0.5,
anchorY: 1
});
self.attack = function () {
@@ -205,21 +261,83 @@
/****
* Game Code
****/
-var gameState = 'playing';
+var gameState = 'menu';
var roundTimer = 60;
var roundStartTime = 0;
-var arena = game.addChild(LK.getAsset('arena', {
+var selectedCharacter = 'shark';
+var characterCards = [];
+var menuContainer = game.addChild(new Container());
+var characterSelectContainer = game.addChild(new Container());
+var gameplayContainer = game.addChild(new Container());
+var titleText = new Text2('FURRY FIGHTER ARENA', {
+ size: 80,
+ fill: 0xFFFFFF
+});
+titleText.anchor.set(0.5, 0.5);
+titleText.x = 2048 / 2;
+titleText.y = 600;
+menuContainer.addChild(titleText);
+var startButton = new Button('menuButton', 'START COMBAT');
+startButton.x = 2048 / 2;
+startButton.y = 1200;
+menuContainer.addChild(startButton);
+startButton.down = function (x, y, obj) {
+ if (gameState === 'menu') {
+ gameState = 'characterSelect';
+ menuContainer.visible = false;
+ characterSelectContainer.visible = true;
+ }
+};
+var characterSelectTitle = new Text2('SELECT YOUR FIGHTER', {
+ size: 60,
+ fill: 0xFFFFFF
+});
+characterSelectTitle.anchor.set(0.5, 0.5);
+characterSelectTitle.x = 2048 / 2;
+characterSelectTitle.y = 400;
+characterSelectContainer.addChild(characterSelectTitle);
+var sharkCard = new CharacterCard('shark', 'SHARK');
+sharkCard.x = 2048 / 2 - 300;
+sharkCard.y = 1000;
+characterSelectContainer.addChild(sharkCard);
+characterCards.push(sharkCard);
+var lizardCard = new CharacterCard('lizard', 'LIZARD');
+lizardCard.x = 2048 / 2;
+lizardCard.y = 1000;
+characterSelectContainer.addChild(lizardCard);
+characterCards.push(lizardCard);
+var wolfCard = new CharacterCard('wolf', 'WOLF');
+wolfCard.x = 2048 / 2 + 300;
+wolfCard.y = 1000;
+characterSelectContainer.addChild(wolfCard);
+characterCards.push(wolfCard);
+sharkCard.setSelected(true);
+var fightButton = new Button('menuButton', 'FIGHT!');
+fightButton.x = 2048 / 2;
+fightButton.y = 1600;
+characterSelectContainer.addChild(fightButton);
+fightButton.down = function (x, y, obj) {
+ if (gameState === 'characterSelect') {
+ gameState = 'playing';
+ characterSelectContainer.visible = false;
+ gameplayContainer.visible = true;
+ roundTimer = 60;
+ }
+};
+characterSelectContainer.visible = false;
+gameplayContainer.visible = false;
+var arena = gameplayContainer.addChild(LK.getAsset('arena', {
anchorX: 0.5,
anchorY: 1,
x: 2048 / 2,
y: 2732 - 200
}));
-var playerFighter = game.addChild(new Fighter(true));
+var playerFighter = gameplayContainer.addChild(new Fighter(true));
playerFighter.x = 2048 / 2 - 300;
playerFighter.y = 2732 - 200;
-var enemyFighter = game.addChild(new Fighter(false));
+var enemyFighter = gameplayContainer.addChild(new Fighter(false));
enemyFighter.x = 2048 / 2 + 300;
enemyFighter.y = 2732 - 200;
var playerHealthBar = new HealthBar(100);
playerHealthBar.x = 100;
@@ -336,20 +454,21 @@
return false;
}
LK.playMusic('battleMusic');
game.update = function () {
- if (gameState !== 'playing') return;
- if (LK.ticks % 60 === 0) {
- roundTimer--;
- timerText.setText(roundTimer.toString());
- if (roundTimer <= 10) {
- timerText.tint = 0xe74c3c;
+ if (gameState === 'playing') {
+ if (LK.ticks % 60 === 0) {
+ roundTimer--;
+ timerText.setText(roundTimer.toString());
+ if (roundTimer <= 10) {
+ timerText.tint = 0xe74c3c;
+ }
}
+ playerHealthBar.setValue(playerFighter.health);
+ enemyHealthBar.setValue(enemyFighter.health);
+ playerStaminaBar.setValue(playerFighter.stamina);
+ enemyStaminaBar.setValue(enemyFighter.stamina);
+ scoreText.setText('Score: ' + LK.getScore());
+ enemyAI.update();
+ checkGameEnd();
}
- playerHealthBar.setValue(playerFighter.health);
- enemyHealthBar.setValue(enemyFighter.health);
- playerStaminaBar.setValue(playerFighter.stamina);
- enemyStaminaBar.setValue(enemyFighter.stamina);
- scoreText.setText('Score: ' + LK.getScore());
- enemyAI.update();
- checkGameEnd();
};
\ No newline at end of file
Una arena al aire libre rodeada por muros altos con patrones geométricos azul oscuro. El suelo está cubierto de hierba púrpura que brilla tenuemente y tiene zonas con charcos de líquido azul resplandeciente que pueden reflejar efectos de ataques o provocar pequeñas explosiones visuales al contacto. Los árboles están dispuestos al fondo y tienen copas rojas con formas pixeladas, no interactúan con los personajes pero aportan un fondo vibrante. La iluminación es baja, con tonos neón que cambian ligeramente de intensidad durante el combate. El área de batalla es plana, con textura suave pero con efectos de distorsión en los bordes, como si el entorno estuviera parcialmente corrompido.. In-Game asset. 2d. High contrast. No shadows
Botón de golpe sin necesidad de que diga para que es, que sea un símbolo de un puño ardiente. In-Game asset. 2d. High contrast. No shadows
Símbolo de escudo pixelado con pixeles amarillos. In-Game asset. 2d. High contrast. No shadows
Toro furry fuerte sin camisa pixelado. In-Game asset. 2d. High contrast. No shadows
Lagarto furry fuerte sin camisa y con taparrabos, que en la cara lleve un cráneo de otro lagarto, que lleve colgantes y que sea pixeleado. In-Game asset. 2d. High contrast. No shadows
Tiburón furry fuerte sin camisa y con shorts, que en la cara lleve unas gafas de sol, que lleve colgantes y que sea pixeleado que se vea todo su cuerpo In-Game asset. 2d. High contrast. No shadows
Lobo blanco fuerte revelando sus pectorales pero usando una capa y un taparrabos, que se vea todo su cuerpo y pixelado. In-Game asset. 2d. High contrast. No shadows
Tigre furry fuerte con una marca de x en su pectoral y pixeleado y que se vea todo su cuerpo, con un taparrabos y una piernera con una daga In-Game asset. 2d. High contrast. No shadows
Barra de vida llamativa In-Game asset. 2d. High contrast. No shadows
Barra de energía llamativa. In-Game asset. 2d. High contrast. No shadows
Mordida, dientes de lobo cerrados. In-Game asset. 2d. High contrast. No shadows
Botón de líneas curvas en total 3 pixeleado. In-Game asset. 2d. High contrast. No shadows
Oso polar furry fuerte con bufanda y pantalones largos y sin camisa, pixeleado. In-Game asset. 2d. High contrast. No shadows
Aguila real furry fuerte cruzando los brazos sin camisa y gran pectoral con un taparrabos de hojas pixeleado todo el cuerpo. In-Game asset. 2d. High contrast. No shadows
Partículas al golpear pixeleado In-Game asset. 2d. High contrast. No shadows
Particula de escudo siendo golpeado pixeleado In-Game asset. 2d. High contrast. No shadows
Barra de vida vacia con un corazón roto In-Game asset. 2d. High contrast. No shadows
Barra de energia vacia In-Game asset. 2d. High contrast. No shadows
Una particular de rayo pixeleada. In-Game asset. 2d. High contrast. No shadows