User prompt
Ajoute un systeĢme de noms aux enfants dans le jeu! Les noms sont seulement deĢcoratifs, voilaĢ la liste des noms : Pour les petites filles : Mia, Sara, Laura, maya, Julie, Olivia, Martine, Paula, Daisy, Juliette, Margot, Tina, AbigaiĢl, cleĢmence, AmeĢlie, Amina, Laurence, Ilona, gloria, valentina, Victoria, Ninon, Manon, Violette, rose, ZeĢlie, Ylenia, Sabrina, Harper, Valentine, EĢlodie, GraĢce, Jade, Eva, MaeĢva, Anna, Alice, Louise,ZoeĢ, ChloeĢ, Julia, Romy,Iris, ambre, Agathe,Inaya,Lea, adele,Clara , Emily, Eveline, Dorine, Lou, amelia, Isabella, charlotte, Delphine, dona, Yasmine,Marie, Carine, Kimberly, Erina, MaeĢlle , JoseĢphine, jacqueline, Françoise, TheĢa ou Denise ! (On pourra en ajouter d'autres par la suite) Pour les petits garçons : Hugo, Louis, Karim, Julien, thomas, Thom, Lucas, CleĢment, Laurent, Ibrahim, Mohamed, LeĢo, Willy, Moris, Mathieu, Marius, Paul, Valentin, Bernard, Eric, Jules, Claude, Quentin, Gabriel, Dimitri, RaphaeĢl, noa, MaeĢl, Arthur, Adam, Isaac, Eden, LeĢon, Sacha, Aaron, liam, NaeĢl, malo, Baptiste, Corentin, Diego, Alexandre, Felix, Gaspard, Alain, Albert, Adrien, Achille, Dorian, Alexis, Alex, Mylan, Pierre, Yann, axel, charles, David, Joseph, jacques, Antoine, François, TheĢo, maxime, victor, Anthony, AndreĢ, William, Jacob, Nathan, sam ou Logan! Les noms des enfants sont aleĢatoires pour chaque enfant, et le nom dun enfant est afficheĢ en dessus de sa teĢte juste au-dessus de son aĢge , ajoute aussi un message lorsque le serpent mange un enfant qui affiche "feĢlicitations ! Vous avez mangeĢ (avec le nom de l'enfant) ce petit deĢsastre ambulant", le message disparaiĢt au bout de 5 secondes, Ou encore quand un enfant reĢussit a s'enfuir un message s'affiche en mode "Oh non! (avec le nom de l'enfant) a reĢussi a s'enfuir !" Qui disparaiĢt aussi au bout de 5 secondes āŖš” Consider importing and using the following plugins: @upit/tween.v1
User prompt
Ajoute les assets pour le biberon quand un enfant le lance (le biberon est lanceĢ aleĢatoirement dans la direction du serpent, le joueur pert les points correspondants si le biberon le touche), le biberon disparaiĢt ensuite , et pour l'appelle des adultes aussi (un adulte apparaiĢt quand un enfant de l'aĢge correspondant l'appel, et disparaiĢt au bout de 3 secondes quand le serpent a perdu les points correspondants), ajoute aussi le fusil qui apparaiĢt de la meĢme façon pour les enfants de l'aĢge requis āŖš” Consider importing and using the following plugins: @upit/tween.v1
User prompt
Ajoute les assets pour le biberon quand un enfant le lance (le biberon est lanceĢ aleĢatoirement dans la direction du serpent, le joueur pert les points correspondants si le biberon le touche), le biberon disparaiĢt ensuite , et pour l'appelle des adultes aussi āŖš” Consider importing and using the following plugins: @upit/tween.v1
User prompt
Ajoute un systeĢme d'aĢge pour les enfants : les enfants ont aleĢatoirement entre 2 et 13 ans, et la faciliteĢ que le serpent (le joueur) a pour les manger varie selon leur aĢge, car certains enfants de certains aĢges ont des capaciteĢs speĢciales qui ralentissent, empeĢche le serpent de les manger et meĢme certains enfants plus aĢgeĢs sont plus rapides que les plus jeunes, voici la liste des capaciteĢs speĢciales selon l'aĢge des enfants : 2 - 4 ans : les enfants de cet aĢge sont des beĢbeĢs dans le jeu, ils n'ont aucune capaciteĢ, ils se contentent de fuir le serpent a une vitesse lente 4 a 6 ans : ces enfants laĢ ont la capaciteĢ de lancer aleĢatoirement leur biberon sur le serpent, ce qui fait perdre 2 points au joueur a chaque fois qu'il le vont , si le joueur perd trop de points, il reĢgresse de niveau 6 aĢ 9 ans : ces enfants-laĢ sont les plus rapides, ils fuient 2 fois plus vite que les enfants plus jeunes, et ont aleĢatoirement meĢme la capaciteĢ d'appeler un adulte , lorsqu'un adulte est appeleĢ, le joueur perd aleĢatoirement entre 5 et 10 points , et pareil le joueur peut reĢgresser de niveau si il perd trop de points ! 9 a 13 ans : ce sont les enfants les plus grands, ceux la sont les plus dangereux, car ils ont des fusils, et ils peuvent aleĢatoirement envoyeĢ des coups de fusils sur le serpent (mais il le font rarement, il y a seulement une chance sur 5 qu'ils le fassent) Ce qui fait perdre 15 a 30 points au joueur quand ils le font L'aĢge des enfants qui apparaissent est aleatoire (sauf que seul les enfants de moins de 5 ans apparaissent quand le joueur est de niveau infeĢrieur a 5, les autres aĢges peuvent apparaiĢtre quand le joueur est au moins niveau 5!), L'aĢge de chaque enfant qui est apparu est afficheĢ au dessus de sa teĢte
User prompt
Ajoute un systeĢme d'aĢge pour les enfants : les enfants ont aleĢatoirement entre 2 et 13 ans, et la faciliteĢ que le serpent (le joueur) a pour les manger varie selon leur aĢge, car certains enfants de certains aĢges ont des capaciteĢs speĢciales qui ralentissent, empeĢche le serpent de les manger et meĢme certains enfants plus aĢgeĢs sont plus rapides que les plus jeunes, voici la liste des capaciteĢs speĢciales selon l'aĢge des enfants : 2 - 4 ans : les enfants de cet aĢge sont des beĢbeĢs dans le jeu, ils n'ont aucune capaciteĢ, ils se contentent de fuir le serpent a une vitesse lente 4 a 6 ans : ces enfants laĢ ont la capaciteĢ de lancer aleĢatoirement leur biberon sur le serpent, ce qui fait perdre 2 points au joueur a chaque fois qu'il le vont , si le joueur perd trop de points, il reĢgresse de niveau 6 aĢ 9 ans : ces enfants-laĢ sont les plus rapides, ils fuient 2 fois plus vite que les enfants plus jeunes, et ont aleĢatoirement meĢme la capaciteĢ d'appeler un adulte , lorsqu'un adulte est appeleĢ, le joueur perd aleĢatoirement entre 5 et 10 points , et pareil le joueur peut reĢgresser de niveau si il perd trop de points ! 9 a 13 ans : ce sont les enfants les plus grands, ceux la sont les plus dangereux, car ils ont des fusils, et ils peuvent aleĢatoirement envoyeĢ des coups de fusils sur le serpent (mais il le font rarement, il y a seulement une chance sur 5 qu'ils le fassent) Ce qui fait perdre 15 a 30 points au joueur quand ils le font L'aĢge des enfants qui apparaissent est aleatoire (sauf que seul les enfants de moins de 5 ans apparaissent quand le joueur est de niveau infeĢrieur a 5, les autres aĢges peuvent apparaiĢtre quand le joueur est au moins niveau 5!), L'aĢge de chaque enfant qui est apparu est afficheĢ au dessus de sa teĢte
User prompt
Ajoute une musique de fond en boucle au jeu
User prompt
Fait en sorte que le nombre de points a obtenir pour monter au niveau supeĢrieur monte de + 5 requis par rapport au niveau preĢceĢdent a chaque nouveau niveau
User prompt
Fait en sorte que le joueur ne monte que d'un seul niveau a la fois, et que le nombre de points et d'enfants a manger pour monter au niveau suivant soient reset pour le niveau actuel
Code edit (1 edits merged)
Please save this source code
User prompt
Roi Serpent
Initial prompt
Bonjour ! CreĢe mon jeu "Roi serpent", Voici les meĢcaniques et le but du jeu : C'est un jeu aĢ la snake, mais avec une touche vraiment personnelle et creĢative : le joueur controĢle un serpent parmi d'autres se deĢplaçant dans une foreĢt amazonienne, des humains deĢbarquent dans la foreĢt, le but du jeu est de manger les humains en rentrant en collision avec eux avant qu'ils fuient , et de monter jusqu'au niveau 35 pour devenir le roi des serpents mangeurs d'humains!, Voici les meĢcaniques du jeu et comment il se preĢsente : Le joueur deĢplace son serpent en appuyant sur son eĢcran tactile ,; le serpent se deĢplace par petit bond a chaque appuie, et se dirige toujours vers l'endroit ouĢ le joueur a appuyeĢ (gauche, droite, en arrieĢre, en avant), Des enfants humains (petite fille et petit garçon aleĢatoirement de 1 aĢ 6 enfants de chacun des deux types), se promeĢnent souvent a l'eĢcran, le but du jeu, pour le joueur est de deĢplacer son serpent vers les enfants, et de les manger en rentrant en collision avec, pour gagner des points et monter en niveau ! Il faut 50 points pour passer au niveau 2, puis a chaque fois le nombre requis de points monte de 10 points, A chaque enfant manger, le joueur gagne 5 points, Mais les enfants ne se laissent pas faire, certaines fois quand ils voient le serpent, ils essayent de fuir!, Et ils sont de plus en plus rapides avec les niveaux! VoilaĢ! Le niveau du joueur et ses points doivent eĢtre afficheĢ a lui, et le joueur doit pouvoir faire en sorte que son serpent deviennent plus rapide que les enfants !
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var Bottle = Container.expand(function (startX, startY, targetX, targetY) { var self = Container.call(this); self.speed = 3; self.targetX = targetX; self.targetY = targetY; self.lifetime = 180; // 3 seconds at 60fps self.age = 0; var bottleGraphics = self.attachAsset('bottle', { anchorX: 0.5, anchorY: 0.5 }); self.x = startX; self.y = startY; // Calculate direction to target var dx = targetX - startX; var dy = targetY - startY; var distance = Math.sqrt(dx * dx + dy * dy); if (distance > 0) { self.directionX = dx / distance; self.directionY = dy / distance; } else { self.directionX = 0; self.directionY = 0; } self.update = function () { self.age++; // Move towards target self.x += self.directionX * self.speed; self.y += self.directionY * self.speed; // Rotate bottle for effect bottleGraphics.rotation += 0.2; // Check bounds and lifetime if (self.age >= self.lifetime || self.x < -50 || self.x > 2098 || self.y < -50 || self.y > 2782) { self.shouldDestroy = true; } }; return self; }); var Child = Container.expand(function (type) { var self = Container.call(this); self.type = type || 'boy'; self.isEscaping = false; self.speed = 1; self.detectionRange = 150; // Age system: 2-4 years for levels < 5, 2-13 years for levels >= 5 if (currentLevel < 5) { self.age = Math.floor(Math.random() * 3) + 2; // 2-4 years } else { self.age = Math.floor(Math.random() * 12) + 2; // 2-13 years } // Set speed based on age if (self.age >= 6 && self.age < 9) { self.speed = 2; // 6-9 year olds are fastest (2x speed) } else { self.speed = 1; // Others have normal speed } self.specialAbilityTimer = 0; self.specialAbilityCooldown = 180 + Math.random() * 240; // 3-7 seconds at 60fps var childGraphics = self.attachAsset(self.type, { anchorX: 0.5, anchorY: 0.5 }); // Add age text above child self.ageText = new Text2(self.age.toString(), { size: 24, fill: 0xFFFFFF }); self.ageText.anchor.set(0.5, 1); self.ageText.x = 0; self.ageText.y = -35; self.addChild(self.ageText); self.wanderDirection = Math.random() * Math.PI * 2; self.wanderTimer = 0; self.wanderChangeTime = 60 + Math.random() * 120; self.update = function () { // Handle special abilities based on age self.specialAbilityTimer++; if (self.specialAbilityTimer >= self.specialAbilityCooldown) { if (self.age >= 4 && self.age < 6) { // 4-6 year olds throw bottles randomly if (Math.random() < 0.3) { // 30% chance // Create bottle projectile aimed at snake var bottle = new Bottle(self.x, self.y, snake.x, snake.y); game.addChild(bottle); bottles.push(bottle); // Play throw sound and flash child LK.getSound('bottle_throw').play(); LK.effects.flashObject(self, 0xFFFF00, 500); } } else if (self.age >= 6 && self.age < 9) { // 6-9 year olds call adults randomly if (Math.random() < 0.25) { // 25% chance var pointsLost = Math.floor(Math.random() * 6) + 5; // 5-10 points LK.setScore(Math.max(0, LK.getScore() - pointsLost)); // Play adult call sound and visual effects LK.getSound('adult_call').play(); LK.effects.flashObject(self, 0xFF8800, 800); // Create warning text effect var warningText = new Text2('ADULT!', { size: 40, fill: 0xFF0000 }); warningText.anchor.set(0.5, 0.5); warningText.x = self.x; warningText.y = self.y - 60; game.addChild(warningText); // Animate warning text tween(warningText, { y: warningText.y - 50, alpha: 0 }, { duration: 1500, easing: tween.easeOut, onFinish: function onFinish() { warningText.destroy(); } }); checkLevelDown(); } } else if (self.age >= 9 && self.age <= 13) { // 9-13 year olds shoot guns - only 1 in 5 chance when they activate ability if (Math.random() < 0.2) { // 20% chance (1 in 5) var pointsLost = Math.floor(Math.random() * 16) + 15; // 15-30 points LK.setScore(Math.max(0, LK.getScore() - pointsLost)); LK.effects.flashObject(self, 0xFF0000, 1000); LK.effects.flashScreen(0xFF0000, 300); checkLevelDown(); } } self.specialAbilityTimer = 0; self.specialAbilityCooldown = 180 + Math.random() * 240; } if (self.isEscaping) { var dx = self.x - snake.x; var dy = self.y - snake.y; var distance = Math.sqrt(dx * dx + dy * dy); if (distance > 0) { var escapeSpeed = self.speed * 3; self.x += dx / distance * escapeSpeed; self.y += dy / distance * escapeSpeed; } } else { var distanceToSnake = Math.sqrt(Math.pow(self.x - snake.x, 2) + Math.pow(self.y - snake.y, 2)); if (distanceToSnake < self.detectionRange) { self.isEscaping = true; LK.effects.flashObject(self, 0xFF0000, 300); } else { self.wanderTimer++; if (self.wanderTimer >= self.wanderChangeTime) { self.wanderDirection = Math.random() * Math.PI * 2; self.wanderTimer = 0; self.wanderChangeTime = 60 + Math.random() * 120; } self.x += Math.cos(self.wanderDirection) * self.speed; self.y += Math.sin(self.wanderDirection) * self.speed; } } if (self.x < 50) self.x = 50; if (self.x > 1998) self.x = 1998; if (self.y < 50) self.y = 50; if (self.y > 2682) self.y = 2682; }; return self; }); var Snake = Container.expand(function () { var self = Container.call(this); self.isMoving = false; self.targetX = 0; self.targetY = 0; self.moveSpeed = 4; var snakeGraphics = self.attachAsset('snake', { anchorX: 0.5, anchorY: 0.5 }); self.moveTo = function (x, y) { self.targetX = x; self.targetY = y; self.isMoving = true; }; self.update = function () { if (self.isMoving) { var dx = self.targetX - self.x; var dy = self.targetY - self.y; var distance = Math.sqrt(dx * dx + dy * dy); if (distance < self.moveSpeed) { self.x = self.targetX; self.y = self.targetY; self.isMoving = false; } else { self.x += dx / distance * self.moveSpeed; self.y += dy / distance * self.moveSpeed; } } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x006400 }); /**** * Game Code ****/ var background = game.attachAsset('background', { x: 0, y: 0 }); var snake = game.addChild(new Snake()); snake.x = 1024; snake.y = 1366; var children = []; var bottles = []; var currentLevel = 1; var pointsNeeded = 50; var levelText = new Text2('Level: 1', { size: 60, fill: 0xFFFFFF }); levelText.anchor.set(0, 0); levelText.x = 150; levelText.y = 50; LK.gui.topLeft.addChild(levelText); var scoreText = new Text2('Score: 0', { size: 60, fill: 0xFFFFFF }); scoreText.anchor.set(0.5, 0); LK.gui.top.addChild(scoreText); var targetText = new Text2('Target: ' + pointsNeeded, { size: 50, fill: 0xFFFF00 }); targetText.anchor.set(1, 0); targetText.x = -50; targetText.y = 50; LK.gui.topRight.addChild(targetText); function spawnChildren() { var boyCount = Math.floor(Math.random() * 6) + 1; var girlCount = Math.floor(Math.random() * 6) + 1; for (var i = 0; i < boyCount; i++) { var boy = game.addChild(new Child('boy')); boy.x = Math.random() * 1800 + 124; boy.y = Math.random() * 2400 + 166; // Speed is now calculated in Child constructor based on age boy.speed += (currentLevel - 1) * 0.2; children.push(boy); } for (var j = 0; j < girlCount; j++) { var girl = game.addChild(new Child('girl')); girl.x = Math.random() * 1800 + 124; girl.y = Math.random() * 2400 + 166; // Speed is now calculated in Child constructor based on age girl.speed += (currentLevel - 1) * 0.2; children.push(girl); } } function updateUI() { levelText.setText('Level: ' + currentLevel); scoreText.setText('Score: ' + LK.getScore()); targetText.setText('Target: ' + pointsNeeded); } function checkLevelUp() { if (LK.getScore() >= pointsNeeded) { currentLevel++; if (currentLevel > 35) { LK.showYouWin(); return; } // Reset score to 0 and calculate new points needed for next level LK.setScore(0); pointsNeeded = 50 + (currentLevel - 2) * 5; for (var i = 0; i < children.length; i++) { children[i].destroy(); } children = []; spawnChildren(); updateUI(); LK.effects.flashScreen(0x00FF00, 500); } } function checkLevelDown() { if (LK.getScore() < 0) { LK.setScore(0); } // Check if we need to go down a level (if score becomes very low compared to target) var minScoreForLevel = Math.max(0, pointsNeeded - 50); if (LK.getScore() < minScoreForLevel && currentLevel > 1) { currentLevel--; pointsNeeded = 50 + (currentLevel - 2) * 5; if (pointsNeeded < 50) pointsNeeded = 50; for (var i = 0; i < children.length; i++) { children[i].destroy(); } children = []; spawnChildren(); updateUI(); LK.effects.flashScreen(0xFF4444, 500); } } spawnChildren(); updateUI(); game.down = function (x, y, obj) { snake.moveTo(x, y); }; game.update = function () { for (var i = children.length - 1; i >= 0; i--) { var child = children[i]; if (snake.intersects(child)) { LK.setScore(LK.getScore() + 5); LK.getSound('catch').play(); child.destroy(); children.splice(i, 1); checkLevelUp(); continue; } var distanceFromCenter = Math.sqrt(Math.pow(child.x - 1024, 2) + Math.pow(child.y - 1366, 2)); if (distanceFromCenter > 1500) { child.destroy(); children.splice(i, 1); } } // Handle bottle collisions and cleanup for (var b = bottles.length - 1; b >= 0; b--) { var bottle = bottles[b]; // Check collision with snake if (snake.intersects(bottle)) { LK.setScore(Math.max(0, LK.getScore() - 2)); LK.effects.flashObject(snake, 0xFF0000, 500); bottle.destroy(); bottles.splice(b, 1); checkLevelDown(); continue; } // Check if bottle should be destroyed if (bottle.shouldDestroy) { bottle.destroy(); bottles.splice(b, 1); } } if (children.length === 0) { spawnChildren(); } updateUI(); }; LK.playMusic('jungle');
===================================================================
--- original.js
+++ change.js
@@ -5,8 +5,46 @@
/****
* Classes
****/
+var Bottle = Container.expand(function (startX, startY, targetX, targetY) {
+ var self = Container.call(this);
+ self.speed = 3;
+ self.targetX = targetX;
+ self.targetY = targetY;
+ self.lifetime = 180; // 3 seconds at 60fps
+ self.age = 0;
+ var bottleGraphics = self.attachAsset('bottle', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.x = startX;
+ self.y = startY;
+ // Calculate direction to target
+ var dx = targetX - startX;
+ var dy = targetY - startY;
+ var distance = Math.sqrt(dx * dx + dy * dy);
+ if (distance > 0) {
+ self.directionX = dx / distance;
+ self.directionY = dy / distance;
+ } else {
+ self.directionX = 0;
+ self.directionY = 0;
+ }
+ self.update = function () {
+ self.age++;
+ // Move towards target
+ self.x += self.directionX * self.speed;
+ self.y += self.directionY * self.speed;
+ // Rotate bottle for effect
+ bottleGraphics.rotation += 0.2;
+ // Check bounds and lifetime
+ if (self.age >= self.lifetime || self.x < -50 || self.x > 2098 || self.y < -50 || self.y > 2782) {
+ self.shouldDestroy = true;
+ }
+ };
+ return self;
+});
var Child = Container.expand(function (type) {
var self = Container.call(this);
self.type = type || 'boy';
self.isEscaping = false;
@@ -49,19 +87,45 @@
if (self.age >= 4 && self.age < 6) {
// 4-6 year olds throw bottles randomly
if (Math.random() < 0.3) {
// 30% chance
- LK.setScore(Math.max(0, LK.getScore() - 2));
+ // Create bottle projectile aimed at snake
+ var bottle = new Bottle(self.x, self.y, snake.x, snake.y);
+ game.addChild(bottle);
+ bottles.push(bottle);
+ // Play throw sound and flash child
+ LK.getSound('bottle_throw').play();
LK.effects.flashObject(self, 0xFFFF00, 500);
- checkLevelDown();
}
} else if (self.age >= 6 && self.age < 9) {
// 6-9 year olds call adults randomly
if (Math.random() < 0.25) {
// 25% chance
var pointsLost = Math.floor(Math.random() * 6) + 5; // 5-10 points
LK.setScore(Math.max(0, LK.getScore() - pointsLost));
+ // Play adult call sound and visual effects
+ LK.getSound('adult_call').play();
LK.effects.flashObject(self, 0xFF8800, 800);
+ // Create warning text effect
+ var warningText = new Text2('ADULT!', {
+ size: 40,
+ fill: 0xFF0000
+ });
+ warningText.anchor.set(0.5, 0.5);
+ warningText.x = self.x;
+ warningText.y = self.y - 60;
+ game.addChild(warningText);
+ // Animate warning text
+ tween(warningText, {
+ y: warningText.y - 50,
+ alpha: 0
+ }, {
+ duration: 1500,
+ easing: tween.easeOut,
+ onFinish: function onFinish() {
+ warningText.destroy();
+ }
+ });
checkLevelDown();
}
} else if (self.age >= 9 && self.age <= 13) {
// 9-13 year olds shoot guns - only 1 in 5 chance when they activate ability
@@ -159,8 +223,9 @@
var snake = game.addChild(new Snake());
snake.x = 1024;
snake.y = 1366;
var children = [];
+var bottles = [];
var currentLevel = 1;
var pointsNeeded = 50;
var levelText = new Text2('Level: 1', {
size: 60,
@@ -268,8 +333,26 @@
child.destroy();
children.splice(i, 1);
}
}
+ // Handle bottle collisions and cleanup
+ for (var b = bottles.length - 1; b >= 0; b--) {
+ var bottle = bottles[b];
+ // Check collision with snake
+ if (snake.intersects(bottle)) {
+ LK.setScore(Math.max(0, LK.getScore() - 2));
+ LK.effects.flashObject(snake, 0xFF0000, 500);
+ bottle.destroy();
+ bottles.splice(b, 1);
+ checkLevelDown();
+ continue;
+ }
+ // Check if bottle should be destroyed
+ if (bottle.shouldDestroy) {
+ bottle.destroy();
+ bottles.splice(b, 1);
+ }
+ }
if (children.length === 0) {
spawnChildren();
}
updateUI();
Fond d'eĢcran foreĢt amazonienne. In-Game asset. 2d. High contrast. No shadows
Petite fille. In-Game asset. 2d. High contrast. No shadows
Petit garçon. In-Game asset. 2d. High contrast. No shadows
Serpent. In-Game asset. 2d. High contrast. No shadows
Biberon. In-Game asset. 2d. High contrast. No shadows
Fusil. In-Game asset. 2d. High contrast. No shadows
Adulte de 30 ans. In-Game asset. 2d. High contrast. No shadows