User prompt
5 çeşit madenci resmi oluştur
User prompt
Cevherler %100 daha yavaş kazılsın
User prompt
Herkes %50 daha yavaş hareket etsin. Seviye yükseltimi ile bu sayı Her seviye %2 artacak şekilde ayarlansın.
User prompt
Bütün yazı fontunu 36 yap.
User prompt
5 farklı müşteri resim dosyası oluştur
User prompt
Seviye panelini, Seviye yazılarını, Seviye yükseltme butonunu hizalı şekilde yeniden boyutlandır.
User prompt
Bütün yazıların büyüklüğünü cevher yazı boyutu ile aynı olsun.
User prompt
Bu panel içerisine seviye yükseltmek için butonlar ve seviye yükseltmeye maliyet ekle.
User prompt
Fabrikaların, mağazaların, şehirlerin ve çalışanların seviyesi olsun. Bu seviyeleri geliştirmek ve takip etmek için sol alt köşeye bir panel oluştur.
User prompt
10 farklı cevher kaynağı oluştur.
User prompt
Müşteriye resim oluştur
User prompt
Taşıyıcılara resim oluştur
User prompt
Araştırmacı cevher bulduktan sonra başlangıç yerinde beklesin.
User prompt
background resim dosyası oluştur.
User prompt
background resim dosyası oluştur.
User prompt
background dosyası oluştur.
User prompt
Arkaplan ile ilgili renkli bir resim oluştur
User prompt
Çalışanların başladığı konuma yere bir renkli resim oluştur.
User prompt
Şehire bir renk resmi ekle
User prompt
Şehiri haritanın soluna üst tarafına taşı.
User prompt
Mağaza ürünleri otomatik satmasın. Oyuna şehir ekle. Şehirden müşteriler gelip ürünleri mağazadan alsınlar.
User prompt
Oyuna Araştırmacı ekle. Bu araştırmacılar maden bittiğinde haritanın herhangi bir yerinde rastgele yeni bir maden bulsunlar.
User prompt
Madenciler cevheri hemen almasınlar. Cevher başında cevheri kazmaları için eline kazma ikonu ekle. ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Madenci al yazısı altına, taşıyıcı al yazısını ekle.
User prompt
Oyuna taşıyıcı ekle. Ürünleri mağazaya taşıyan taşıyıcıların olması ile ilgili kod ekle. Ürünler otomatik olarak mağazaya taşınmasın. Taşıyıcılar sayesinde ürünler taşınsın.
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
// Carrier: Moves from factory to shop, carries products
var Carrier = Container.expand(function () {
var self = Container.call(this);
var carrierSprite = self.attachAsset('miner', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 7;
self.state = 'idle'; // 'idle', 'toFactory', 'toShop'
self.target = null;
self.carrying = false;
self.factoryTarget = null;
self.shopTarget = null;
self.goToFactory = function (factory) {
self.state = 'toFactory';
self.target = {
x: factory.x,
y: factory.y
};
self.factoryTarget = factory;
};
self.goToShop = function (shop) {
self.state = 'toShop';
self.target = {
x: shop.x,
y: shop.y
};
self.shopTarget = shop;
};
self.setIdle = function () {
self.state = 'idle';
self.target = null;
self.factoryTarget = null;
self.shopTarget = null;
self.carrying = false;
};
self.moveTowards = function (tx, ty) {
var dx = tx - self.x;
var dy = ty - self.y;
var dist = Math.sqrt(dx * dx + dy * dy);
if (dist < self.speed) {
self.x = tx;
self.y = ty;
return true;
}
self.x += dx / dist * self.speed;
self.y += dy / dist * self.speed;
return false;
};
self.update = function () {
if (self.state === 'toFactory' && self.factoryTarget) {
if (self.moveTowards(self.factoryTarget.x, self.factoryTarget.y)) {
// Arrived at factory
if (!self.carrying && self.factoryTarget.productBuffer > 0) {
self.factoryTarget.productBuffer--;
self.carrying = true;
if (shopList.length > 0) {
self.goToShop(shopList[0]);
} else {
self.setIdle();
}
} else {
self.setIdle();
}
}
} else if (self.state === 'toShop' && self.shopTarget) {
if (self.moveTowards(self.shopTarget.x, self.shopTarget.y)) {
// Arrived at shop
if (self.carrying) {
// Deliver product to shop
if (self.shopTarget && typeof self.shopTarget.productBuffer === "number") {
self.shopTarget.productBuffer++;
}
self.carrying = false;
}
if (factoryList.length > 0 && factoryList[0].productBuffer > 0) {
self.goToFactory(factoryList[0]);
} else {
self.setIdle();
}
}
} else if (self.state === 'idle') {
// Look for product to carry
if (factoryList.length > 0 && factoryList[0].productBuffer > 0) {
self.goToFactory(factoryList[0]);
}
}
};
return self;
});
// City: Spawns customers that go to the shop
var City = Container.expand(function () {
var self = Container.call(this);
// Add city color image
var citySprite = self.attachAsset('city', {
anchorX: 0.5,
anchorY: 0.5
});
self.x = 150; // Move city to upper left side, but not in the 0-100px menu area
self.y = 150; // Top left, but not in the 0-100px menu area
self.customerSpawnCooldown = 0;
self.customerSpawnInterval = 180; // 3 seconds at 60fps
self.update = function () {
self.customerSpawnCooldown--;
if (self.customerSpawnCooldown <= 0) {
self.customerSpawnCooldown = self.customerSpawnInterval + Math.floor(Math.random() * 120);
spawnCustomer();
}
};
return self;
});
// Customer: Walks from city to shop, buys product if available, then leaves
var Customer = Container.expand(function () {
var self = Container.call(this);
var customerSprite = self.attachAsset('miner', {
anchorX: 0.5,
anchorY: 0.5
});
customerSprite.tint = 0xFFD700; // gold tint for customer
self.speed = 5 + Math.random() * 2;
self.state = 'toShop'; // 'toShop', 'leaving'
self.targetShop = null;
self.hasBought = false;
self.moveTowards = function (tx, ty) {
var dx = tx - self.x;
var dy = ty - self.y;
var dist = Math.sqrt(dx * dx + dy * dy);
if (dist < self.speed) {
self.x = tx;
self.y = ty;
return true;
}
self.x += dx / dist * self.speed;
self.y += dy / dist * self.speed;
return false;
};
self.update = function () {
if (self.state === 'toShop' && self.targetShop) {
if (self.moveTowards(self.targetShop.x, self.targetShop.y)) {
// Arrived at shop
if (!self.hasBought && self.targetShop.productBuffer > 0) {
self.targetShop.productBuffer--;
money += 10;
updateMoneyText();
self.hasBought = true;
self.state = 'leaving';
self.leaveTarget = {
x: self.x,
y: -100
}; // leave upwards
} else {
// No product, leave anyway
self.state = 'leaving';
self.leaveTarget = {
x: self.x,
y: -100
};
}
}
} else if (self.state === 'leaving') {
if (self.moveTowards(self.leaveTarget.x, self.leaveTarget.y)) {
// Remove from game
for (var i = 0; i < customerList.length; i++) {
if (customerList[i] === self) {
customerList.splice(i, 1);
break;
}
}
self.destroy();
}
}
};
return self;
});
// Factory: Converts ore to product over time
var Factory = Container.expand(function () {
var self = Container.call(this);
var factorySprite = self.attachAsset('factory', {
anchorX: 0.5,
anchorY: 0.5
});
self.oreBuffer = 0; // ore waiting to be processed
self.productBuffer = 0; // products ready to be sold
self.processTime = 60; // ticks to process one ore
self.processCounter = 0;
self.update = function () {
if (self.oreBuffer > 0) {
self.processCounter++;
if (self.processCounter >= self.processTime) {
self.oreBuffer--;
self.productBuffer++;
self.processCounter = 0;
}
} else {
self.processCounter = 0;
}
};
return self;
});
// Mine: Contains ore, can be depleted
var Mine = Container.expand(function () {
var self = Container.call(this);
var mineSprite = self.attachAsset('mine', {
anchorX: 0.5,
anchorY: 0.5
});
self.ore = 10; // initial ore
self.setOre = function (amount) {
self.ore = amount;
};
return self;
});
// Miner: Moves to mine, collects ore, brings to factory, repeats
var Miner = Container.expand(function () {
var self = Container.call(this);
// Miner visual
var minerSprite = self.attachAsset('miner', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 6; // px per tick
self.state = 'idle'; // 'idle', 'toMine', 'mining', 'toFactory', 'toShop'
self.target = null; // {x, y}
self.carrying = null; // 'ore' or 'product' or null
self.mineTarget = null; // reference to Mine
self.factoryTarget = null; // reference to Factory
// Mining animation state
self.miningTicks = 0;
self.miningDuration = 60; // 1 second at 60fps
self.pickaxeIcon = null;
// Set miner to go to a mine
self.goToMine = function (mine) {
self.state = 'toMine';
self.target = {
x: mine.x,
y: mine.y
};
self.mineTarget = mine;
};
// Set miner to go to factory
self.goToFactory = function (factory) {
self.state = 'toFactory';
self.target = {
x: factory.x,
y: factory.y
};
self.factoryTarget = factory;
};
// Set miner to idle
self.setIdle = function () {
self.state = 'idle';
self.target = null;
self.mineTarget = null;
self.factoryTarget = null;
self.miningTicks = 0;
if (self.pickaxeIcon) {
self.pickaxeIcon.destroy();
self.pickaxeIcon = null;
}
};
// Move towards target
self.moveTowards = function (tx, ty) {
var dx = tx - self.x;
var dy = ty - self.y;
var dist = Math.sqrt(dx * dx + dy * dy);
if (dist < self.speed) {
self.x = tx;
self.y = ty;
return true;
}
self.x += dx / dist * self.speed;
self.y += dy / dist * self.speed;
return false;
};
// Called every tick
self.update = function () {
if (self.state === 'toMine' && self.mineTarget) {
if (self.moveTowards(self.mineTarget.x, self.mineTarget.y)) {
// Arrived at mine
if (self.mineTarget.ore > 0 && !self.carrying) {
// Start mining animation
self.state = 'mining';
self.miningTicks = 0;
// Add pickaxe icon if not present
if (!self.pickaxeIcon) {
self.pickaxeIcon = LK.getAsset('pickaxe', {
anchorX: 0.5,
anchorY: 1.2,
x: 0,
y: -60
});
self.addChild(self.pickaxeIcon);
}
// Animate pickaxe (simple up-down)
tween(self.pickaxeIcon, {
y: -80
}, {
duration: 200,
easing: tween.cubicInOut,
onFinish: function onFinish() {
if (self.pickaxeIcon) {
tween(self.pickaxeIcon, {
y: -60
}, {
duration: 200,
easing: tween.cubicInOut
});
}
}
});
} else {
self.setIdle();
}
}
} else if (self.state === 'mining' && self.mineTarget) {
self.miningTicks++;
// Animate pickaxe every 20 ticks
if (self.pickaxeIcon && self.miningTicks % 20 === 0) {
tween(self.pickaxeIcon, {
y: -80
}, {
duration: 100,
easing: tween.cubicInOut,
onFinish: function onFinish() {
if (self.pickaxeIcon) {
tween(self.pickaxeIcon, {
y: -60
}, {
duration: 100,
easing: tween.cubicInOut
});
}
}
});
}
if (self.miningTicks >= self.miningDuration) {
if (self.mineTarget.ore > 0 && !self.carrying) {
self.mineTarget.ore--;
self.carrying = 'ore';
if (self.pickaxeIcon) {
self.pickaxeIcon.destroy();
self.pickaxeIcon = null;
}
self.goToFactory(factoryList[0]);
} else {
self.setIdle();
}
}
} else if (self.state === 'toFactory' && self.factoryTarget) {
if (self.moveTowards(self.factoryTarget.x, self.factoryTarget.y)) {
// Arrived at factory
if (self.carrying === 'ore') {
self.carrying = null;
self.factoryTarget.oreBuffer++;
self.setIdle();
} else {
self.setIdle();
}
}
} else if (self.state === 'idle') {
// Find nearest mine with ore
var bestMine = null;
var bestDist = Infinity;
for (var i = 0; i < mineList.length; i++) {
var m = mineList[i];
if (m.ore > 0) {
var dx = m.x - self.x;
var dy = m.y - self.y;
var d = dx * dx + dy * dy;
if (d < bestDist) {
bestDist = d;
bestMine = m;
}
}
}
if (bestMine) {
self.goToMine(bestMine);
}
}
};
return self;
});
// Researcher: When a mine is depleted, finds a new mine location and spawns it
var Researcher = Container.expand(function () {
var self = Container.call(this);
// Visual for researcher
var researcherSprite = self.attachAsset('miner', {
anchorX: 0.5,
anchorY: 0.5
});
researcherSprite.tint = 0x1a8ffc; // blue tint for distinction
self.speed = 5;
self.state = 'idle'; // 'idle', 'moving', 'researching'
self.target = null;
self.researchTicks = 0;
self.researchDuration = 90; // 1.5 seconds
self.moveTowards = function (tx, ty) {
var dx = tx - self.x;
var dy = ty - self.y;
var dist = Math.sqrt(dx * dx + dy * dy);
if (dist < self.speed) {
self.x = tx;
self.y = ty;
return true;
}
self.x += dx / dist * self.speed;
self.y += dy / dist * self.speed;
return false;
};
self.startResearch = function (tx, ty) {
self.state = 'moving';
self.target = {
x: tx,
y: ty
};
self.researchTicks = 0;
};
self.update = function () {
if (self.state === 'moving' && self.target) {
if (self.moveTowards(self.target.x, self.target.y)) {
self.state = 'researching';
self.researchTicks = 0;
}
} else if (self.state === 'researching') {
self.researchTicks++;
if (self.researchTicks >= self.researchDuration) {
// Spawn new mine at this location
var mine = new Mine();
mine.x = self.x;
mine.y = self.y;
mineList.push(mine);
game.addChild(mine);
self.state = 'idle';
self.target = null;
}
}
};
return self;
});
// Shop: Holds products for sale, customers come to buy
var Shop = Container.expand(function () {
var self = Container.call(this);
var shopSprite = self.attachAsset('shop', {
anchorX: 0.5,
anchorY: 0.5
});
self.productBuffer = 0; // products available in shop
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x222222
});
/****
* Game Code
****/
// Add a background image to the game
var backgroundImg = LK.getAsset('background', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 1366,
scaleX: 1,
scaleY: 1
});
backgroundImg.alpha = 1;
game.addChildAt(backgroundImg, 0); // Add as the bottom-most layer
// City colored image asset (example: blue city icon)
// Global game state
var minerList = [];
var mineList = [];
var factoryList = [];
var shopList = [];
var carrierList = [];
var researcherList = [];
var customerList = [];
var money = 50;
var city = null;
function spawnCustomer() {
if (shopList.length === 0) return;
var customer = new Customer();
customer.x = city.x;
customer.y = city.y + 40;
customer.targetShop = shopList[0];
customerList.push(customer);
game.addChild(customer);
}
function spawnResearcher() {
var researcher = new Researcher();
// Place at random near bottom
researcher.x = 200 + Math.random() * 1600;
researcher.y = 2300 + Math.random() * 200;
researcherList.push(researcher);
game.addChild(researcher);
}
function spawnCarrier() {
var carrier = new Carrier();
// Place at random near bottom
carrier.x = 600 + Math.random() * 800;
carrier.y = 2300 + Math.random() * 200;
carrierList.push(carrier);
game.addChild(carrier);
}
// UI
var moneyText = new Text2('₺' + money, {
size: 100,
fill: 0xFFE066
});
moneyText.anchor.set(0.5, 0);
LK.gui.top.addChild(moneyText);
function updateMoneyText() {
moneyText.setText('₺' + money);
}
// Add buttons for buying miners and mines
var buyMinerBtn = new Text2('Madenci Al (₺30)', {
size: 70,
fill: "#fff"
});
buyMinerBtn.anchor.set(0.5, 0.5);
buyMinerBtn.x = 400;
buyMinerBtn.y = 100;
LK.gui.top.addChild(buyMinerBtn);
// Add 'Taşıyıcı Al' text below 'Madenci Al'
var carrierLabel = new Text2('Taşıyıcı Al', {
size: 50,
fill: "#fff"
});
carrierLabel.anchor.set(0.5, 0.5);
carrierLabel.x = 400;
carrierLabel.y = 170;
LK.gui.top.addChild(carrierLabel);
var buyMineBtn = new Text2('Maden Aç (₺40)', {
size: 70,
fill: "#fff"
});
buyMineBtn.anchor.set(0.5, 0.5);
buyMineBtn.x = 900;
buyMineBtn.y = 100;
LK.gui.top.addChild(buyMineBtn);
var buyFactoryBtn = new Text2('Fabrika Kur (₺60)', {
size: 70,
fill: "#fff"
});
buyFactoryBtn.anchor.set(0.5, 0.5);
buyFactoryBtn.x = 1500;
buyFactoryBtn.y = 100;
LK.gui.top.addChild(buyFactoryBtn);
var buyCarrierBtn = new Text2('Taşıyıcı Al (₺25)', {
size: 70,
fill: "#fff"
});
buyCarrierBtn.anchor.set(0.5, 0.5);
buyCarrierBtn.x = 2000;
buyCarrierBtn.y = 100;
LK.gui.top.addChild(buyCarrierBtn);
buyCarrierBtn.down = function () {
if (money >= 25) {
money -= 25;
updateMoneyText();
spawnCarrier();
}
};
// Button events
buyMinerBtn.down = function () {
if (money >= 30) {
money -= 30;
updateMoneyText();
spawnMiner();
}
};
buyMineBtn.down = function () {
if (money >= 40) {
money -= 40;
updateMoneyText();
spawnMine();
}
};
buyFactoryBtn.down = function () {
if (money >= 60) {
money -= 60;
updateMoneyText();
spawnFactory();
}
};
// Spawning functions
function spawnMiner() {
var miner = new Miner();
// Place at random near bottom
miner.x = 400 + Math.random() * 1200;
miner.y = 2300 + Math.random() * 200;
minerList.push(miner);
game.addChild(miner);
}
function spawnMine() {
var mine = new Mine();
// Place at random in upper half
mine.x = 300 + Math.random() * 1400;
mine.y = 600 + Math.random() * 600;
mineList.push(mine);
game.addChild(mine);
}
function spawnFactory() {
var factory = new Factory();
// Place at center
factory.x = 1024;
factory.y = 1600;
factoryList.push(factory);
game.addChild(factory);
}
function spawnShop() {
var shop = new Shop();
shop.x = 1024;
shop.y = 350;
shopList.push(shop);
game.addChild(shop);
}
// Initial setup
// Add worker start position image at bottom center
var workerStartImg = LK.getAsset('workerStart', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 2400
});
game.addChild(workerStartImg);
spawnMine();
spawnMine();
spawnFactory();
spawnShop();
spawnMiner();
spawnCarrier();
spawnResearcher();
city = new City();
game.addChild(city);
// Shop sell timer REMOVED: Carriers now deliver products
// Dragging mines/factories for placement (future feature, not implemented now)
// Main game update
game.update = function () {
if (city) city.update();
// Update all customers
for (var i = 0; i < customerList.length; i++) {
customerList[i].update();
}
// Update all miners
for (var i = 0; i < minerList.length; i++) {
minerList[i].update();
}
// Update all factories
for (var i = 0; i < factoryList.length; i++) {
factoryList[i].update();
}
// Update all carriers
for (var i = 0; i < carrierList.length; i++) {
carrierList[i].update();
}
// Update all researchers
for (var i = 0; i < researcherList.length; i++) {
researcherList[i].update();
}
// Remove depleted mines and assign researcher to find new mine
for (var i = mineList.length - 1; i >= 0; i--) {
if (mineList[i].ore <= 0) {
// Find an idle researcher
var assigned = false;
for (var r = 0; r < researcherList.length; r++) {
var researcher = researcherList[r];
if (researcher.state === 'idle') {
// Pick a random location in upper half for new mine
var tx = 300 + Math.random() * 1400;
var ty = 600 + Math.random() * 600;
researcher.startResearch(tx, ty);
assigned = true;
break;
}
}
mineList[i].destroy();
mineList.splice(i, 1);
}
}
};
// Show product/ore/factory status as text overlays
var statusTexts = [];
function updateStatusTexts() {
// Remove old
for (var i = 0; i < statusTexts.length; i++) {
statusTexts[i].destroy();
}
statusTexts = [];
// Mines
for (var i = 0; i < mineList.length; i++) {
var t = new Text2('Cevher: ' + mineList[i].ore, {
size: 50,
fill: "#fff"
});
t.anchor.set(0.5, 1);
t.x = mineList[i].x;
t.y = mineList[i].y - 80;
game.addChild(t);
statusTexts.push(t);
}
// Factories
for (var i = 0; i < factoryList.length; i++) {
var t = new Text2('Cevher: ' + factoryList[i].oreBuffer + '\nÜrün: ' + factoryList[i].productBuffer, {
size: 50,
fill: "#fff"
});
t.anchor.set(0.5, 1);
t.x = factoryList[i].x;
t.y = factoryList[i].y - 80;
game.addChild(t);
statusTexts.push(t);
}
// Shops
for (var i = 0; i < shopList.length; i++) {
var t = new Text2('Ürün: ' + shopList[i].productBuffer, {
size: 50,
fill: "#fff"
});
t.anchor.set(0.5, 1);
t.x = shopList[i].x;
t.y = shopList[i].y - 80;
game.addChild(t);
statusTexts.push(t);
}
}
var statusTimer = LK.setInterval(updateStatusTexts, 400);
// Prevent UI overlap with top left menu
// (All UI is placed away from top left 100x100 px)
buyMinerBtn.x = 400;
buyMineBtn.x = 900;
buyFactoryBtn.x = 1500;
// No background, no music, no sound, as per requirements
// End of MVP code ===================================================================
--- original.js
+++ change.js
@@ -465,18 +465,18 @@
/****
* Game Code
****/
-// Add a colored background image to the game
-var backgroundImg = LK.getAsset('workerStart', {
+// Add a background image to the game
+var backgroundImg = LK.getAsset('background', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 1366,
- scaleX: 8,
- scaleY: 12
+ scaleX: 1,
+ scaleY: 1
});
-backgroundImg.alpha = 0.18;
+backgroundImg.alpha = 1;
game.addChildAt(backgroundImg, 0); // Add as the bottom-most layer
// City colored image asset (example: blue city icon)
// Global game state
var minerList = [];
Kazma cevheri kazma hareketli resmi.. In-Game asset. 2d. High contrast. No shadows
Cevher. In-Game asset. 2d. High contrast. No shadows
Üstten olacak şekilde hafif ormanlık ve dağlık olacak şekilde çayır.. In-Game asset. 2d. High contrast. Gölgelikler olsun. Map tarzı bir harita.. In-Game asset. 2d. High contrast. No shadows
Madenci. In-Game asset. 2d. High contrast. No shadows
Savaşçı. In-Game asset. 2d. High contrast. No shadows
Kılıç kalkan ok yay gibi savaş malzemeleri taşıyan at arabası. In-Game asset. 2d. High contrast. No shadows
Demirci, Eski savaş malzemeleri üretiyor. In-Game asset. 2d. High contrast. No shadows
Okçu savaşçı. In-Game asset. 2d. High contrast. No shadows
Eski çağ savaş malzemesi dükkanı. In-Game asset. 2d. High contrast. No shadows
Cevher. In-Game asset. 2d. High contrast. No shadows
Cevher. In-Game asset. 2d. High contrast. No shadows
Savaşçı kampı. In-Game asset. 2d. High contrast. No shadows
Büyük savaşçı kampı uzaktan görünüm. In-Game asset. 2d. High contrast. No shadows
Siyah sayfa. In-Game asset. 2d. High contrast. No shadows
Madenci. In-Game asset. 2d. High contrast. No shadows
Demirci ve madencilerin olduğu uzaktan bakış bir kamp alanı oluştur.. In-Game asset. 2d. High contrast. No shadows
Eski kılıçlı silahlar ve cevherlerin vs. olduğu uzaktan bakış depo alanı.. In-Game asset. 2d. High contrast. No shadows
Canavar. In-Game asset. 2d. High contrast. No shadows
Düşman canavar. In-Game asset. 2d. High contrast. No shadows
Düşman farklı canavar. In-Game asset. 2d. High contrast. No shadows
Kılıçlar savaş iconu. In-Game asset. 2d. High contrast. No shadows
Canavar. In-Game asset. 2d. High contrast. No shadows
Atlı savaşçı asker. In-Game asset. 2d. High contrast. No shadows
Mızraklı piyade asker. In-Game asset. 2d. High contrast. No shadows
Okçu piyade savaşçı. In-Game asset. 2d. High contrast. No shadows
Yaya Piyade savaşçı. In-Game asset. 2d. High contrast. No shadows
Zırhlı Savaşçı. In-Game asset. 2d. High contrast. No shadows
Yetişen yiyecek. In-Game asset. 2d. High contrast. No shadows
Yetişen Yiyecek. In-Game asset. 2d. High contrast. No shadows
Dalında çilek. In-Game asset. 2d. High contrast. No shadows
Dalında Meyve. In-Game asset. 2d. High contrast. No shadows
Oduncu. In-Game asset. 2d. High contrast. No shadows
Oduncu. In-Game asset. 2d. High contrast. No shadows
Oduncu. In-Game asset. 2d. High contrast. No shadows
Ağaç. In-Game asset. 2d. High contrast. No shadows
Ağaç. In-Game asset. 2d. High contrast. No shadows
Toplayıcı. In-Game asset. 2d. High contrast. No shadows
Toplayıcı. In-Game asset. 2d. High contrast. No shadows
İnşaat eski çağ. In-Game asset. 2d. High contrast. No shadows
Eski çağ savaş karavan. In-Game asset. 2d. High contrast. No shadows
Kalkan. In-Game asset. 2d. High contrast. No shadows
Kalkanlı Savaş Arabası. In-Game asset. 2d. High contrast. No shadows
Koçbaşı. In-Game asset. 2d. High contrast. No shadows
Kılıç. In-Game asset. 2d. High contrast. No shadows
Mızrak. In-Game asset. 2d. High contrast. No shadows
Ok ve Yay birlikte eski çağ. In-Game asset. 2d. High contrast. No shadows
Büyük savaş baltası. In-Game asset. 2d. High contrast. No shadows
Savaş Zırhı. In-Game asset. 2d. High contrast. No shadows
Miğfer. In-Game asset. 2d. High contrast. No shadows
Maden arayıcı eski çağ. In-Game asset. 2d. High contrast. No shadows
Arkaplan müziği için kullanacağım müzik ile ilgili bir icon. In-Game asset. 2d. High contrast. No shadows