diff --git a/addons/game_asset_backup/data/game_assets/buildings/spring/temple/temple_l.png b/addons/game_asset_backup/data/game_assets/buildings/spring/temple/temple_l.png
index ae5470d..cb4175f 100644
Binary files a/addons/game_asset_backup/data/game_assets/buildings/spring/temple/temple_l.png and b/addons/game_asset_backup/data/game_assets/buildings/spring/temple/temple_l.png differ
diff --git a/addons/game_asset_backup/data/game_assets/buildings/spring/temple/temple_r.png b/addons/game_asset_backup/data/game_assets/buildings/spring/temple/temple_r.png
index d83dacd..85fd32a 100644
Binary files a/addons/game_asset_backup/data/game_assets/buildings/spring/temple/temple_r.png and b/addons/game_asset_backup/data/game_assets/buildings/spring/temple/temple_r.png differ
diff --git a/assets/buildings/spring/barracks/barracks_l.png b/assets/buildings/spring/barracks/barracks_l.png
index 37cc879..64a9fec 100644
Binary files a/assets/buildings/spring/barracks/barracks_l.png and b/assets/buildings/spring/barracks/barracks_l.png differ
diff --git a/assets/buildings/spring/barracks/barracks_r.png b/assets/buildings/spring/barracks/barracks_r.png
index 15b7675..15b6685 100644
Binary files a/assets/buildings/spring/barracks/barracks_r.png and b/assets/buildings/spring/barracks/barracks_r.png differ
diff --git a/assets/buildings/spring/blackmarket/blackmarket_l.png b/assets/buildings/spring/blackmarket/blackmarket_l.png
index bfbb712..942c3af 100644
Binary files a/assets/buildings/spring/blackmarket/blackmarket_l.png and b/assets/buildings/spring/blackmarket/blackmarket_l.png differ
diff --git a/assets/buildings/spring/blackmarket/blackmarket_r.png b/assets/buildings/spring/blackmarket/blackmarket_r.png
index 7b1fde9..f953d12 100644
Binary files a/assets/buildings/spring/blackmarket/blackmarket_r.png and b/assets/buildings/spring/blackmarket/blackmarket_r.png differ
diff --git a/assets/buildings/spring/blacksmith/blacksmith_l.png b/assets/buildings/spring/blacksmith/blacksmith_l.png
index 9112c4a..5bc6154 100644
Binary files a/assets/buildings/spring/blacksmith/blacksmith_l.png and b/assets/buildings/spring/blacksmith/blacksmith_l.png differ
diff --git a/assets/buildings/spring/blacksmith/blacksmith_r.png b/assets/buildings/spring/blacksmith/blacksmith_r.png
index df82e57..59bdfb7 100644
Binary files a/assets/buildings/spring/blacksmith/blacksmith_r.png and b/assets/buildings/spring/blacksmith/blacksmith_r.png differ
diff --git a/assets/buildings/spring/clinic/clinic_l.png b/assets/buildings/spring/clinic/clinic_l.png
index 9c12e71..5b6510e 100644
Binary files a/assets/buildings/spring/clinic/clinic_l.png and b/assets/buildings/spring/clinic/clinic_l.png differ
diff --git a/assets/buildings/spring/clinic/clinic_r.png b/assets/buildings/spring/clinic/clinic_r.png
index 9af64e3..699332d 100644
Binary files a/assets/buildings/spring/clinic/clinic_r.png and b/assets/buildings/spring/clinic/clinic_r.png differ
diff --git a/assets/buildings/spring/grocery/grocery_l.png b/assets/buildings/spring/grocery/grocery_l.png
index c192db4..005640d 100644
Binary files a/assets/buildings/spring/grocery/grocery_l.png and b/assets/buildings/spring/grocery/grocery_l.png differ
diff --git a/assets/buildings/spring/grocery/grocery_r.png b/assets/buildings/spring/grocery/grocery_r.png
index cfb761e..a4cec13 100644
Binary files a/assets/buildings/spring/grocery/grocery_r.png and b/assets/buildings/spring/grocery/grocery_r.png differ
diff --git a/assets/buildings/spring/guild/guild_l.png b/assets/buildings/spring/guild/guild_l.png
index 03880db..d532e93 100644
Binary files a/assets/buildings/spring/guild/guild_l.png and b/assets/buildings/spring/guild/guild_l.png differ
diff --git a/assets/buildings/spring/guild/guild_r.png b/assets/buildings/spring/guild/guild_r.png
index ef7c67c..802ad0a 100644
Binary files a/assets/buildings/spring/guild/guild_r.png and b/assets/buildings/spring/guild/guild_r.png differ
diff --git a/assets/buildings/spring/library/library_l.png b/assets/buildings/spring/library/library_l.png
index 1f20ecc..6a94516 100644
Binary files a/assets/buildings/spring/library/library_l.png and b/assets/buildings/spring/library/library_l.png differ
diff --git a/assets/buildings/spring/library/library_r.png b/assets/buildings/spring/library/library_r.png
index 03cfd16..dae659d 100644
Binary files a/assets/buildings/spring/library/library_r.png and b/assets/buildings/spring/library/library_r.png differ
diff --git a/assets/buildings/spring/temple/temple_l.png b/assets/buildings/spring/temple/temple_l.png
index ae5470d..cb4175f 100644
Binary files a/assets/buildings/spring/temple/temple_l.png and b/assets/buildings/spring/temple/temple_l.png differ
diff --git a/assets/buildings/spring/temple/temple_r.png b/assets/buildings/spring/temple/temple_r.png
index d83dacd..85fd32a 100644
Binary files a/assets/buildings/spring/temple/temple_r.png and b/assets/buildings/spring/temple/temple_r.png differ
diff --git a/world.html b/world.html
index 3370126..84ccdc4 100644
--- a/world.html
+++ b/world.html
@@ -1749,22 +1749,22 @@ const MICRO_BUILD_ITEMS = [
// 建筑 / 设施 目录(兜底:未登录或 Odoo 未提供时直接用此;登录后由 /yt_world/api/micro/catalog 覆盖)。
// flat=true 表示平面俯视,岛上压成菱形贴地;否则为 3/4 立绘,竖直站立。
const MICRO_BUILD_EXTRA = [
- { id: 'cottage', cat: 'build', icon: 'assets/buildings/spring/cottage/cottage_l.png?v=2', name: '农舍', desc: '村民起居的基本居所,提供人口上限与夜间休息。', flat: false, w: 2, h: 2, statLevel: 1, statHp: 120, statYield: { population: 4 } },
- { id: 'windmill', cat: 'build', icon: 'assets/buildings/spring/windmill/windmill_l.png?v=2', name: '风车', desc: '利用风力磨粉与提水,提升粮食加工效率。', flat: false, w: 2, h: 2, statLevel: 1, statHp: 110, statYield: { flour: 2 } },
- { id: 'blacksmith', cat: 'build', icon: 'assets/buildings/spring/blacksmith/blacksmith_l.png?v=2',name: '铁匠铺', desc: '锻造工具与武器,产出金属制品。', flat: false, w: 2, h: 2, statLevel: 1, statHp: 130, statYield: { metal: 2 } },
- { id: 'grocery', cat: 'build', icon: 'assets/buildings/spring/grocery/grocery_l.png?v=2', name: '杂货铺', desc: '交易日用物资的小型商铺,促进经济流通。', flat: false, w: 2, h: 2, statLevel: 1, statHp: 90, statYield: { coin: 2 } },
- { id: 'temple', cat: 'build', icon: 'assets/buildings/spring/temple/temple_l.png', name: '神庙', desc: '供奉信仰的场所,提升居民精神状态与领地声望。', flat: false, w: 2, h: 2, statLevel: 1, statHp: 160, statYield: { prestige: 3 } },
- { id: 'clinic', cat: 'build', icon: 'assets/buildings/spring/clinic/clinic_l.png', name: '医务室', desc: '诊治伤病,恢复居民生命值。', flat: false, w: 2, h: 2, statLevel: 1, statHp: 100, statYield: { heal: 2 } },
- { id: 'restaurant', cat: 'build', icon: 'assets/buildings/spring/restaurant/restaurant_l.png',name: '酒馆', desc: '烹制料理,为居民提供饱食与心情加成。', flat: false, w: 2, h: 2, statLevel: 1, statHp: 95, statYield: { satiety: 3 } },
- { id: 'pasture', cat: 'business', icon: 'assets/buildings/spring/pasture/pasture_l.png', name: '牧场', desc: '放养牲畜,稳定产出肉奶类资源。', flat: false, w: 2, h: 2, statLevel: 1, statHp: 105, statYield: { meat: 2, milk: 1 } },
- { id: 'blackmarket', cat: 'build', icon: 'assets/buildings/spring/blackmarket/blackmarket_l.png',name:'商城', desc: '灰色交易点,可换取稀有物资但伴随风险。', flat: false, w: 2, h: 2, statLevel: 1, statHp: 80, statYield: { rare: 1 } },
+ { id: 'cottage', cat: 'build', icon: 'assets/buildings/spring/cottage/cottage_l.png?v=4', name: '农舍', desc: '村民起居的基本居所,提供人口上限与夜间休息。', flat: false, w: 2, h: 2, statLevel: 1, statHp: 120, statYield: { population: 4 } },
+ { id: 'windmill', cat: 'build', icon: 'assets/buildings/spring/windmill/windmill_l.png?v=4', name: '风车', desc: '利用风力磨粉与提水,提升粮食加工效率。', flat: false, w: 3, h: 3, statLevel: 1, statHp: 110, statYield: { flour: 2 } },
+ { id: 'blacksmith', cat: 'build', icon: 'assets/buildings/spring/blacksmith/blacksmith_l.png?v=5',name: '铁匠铺', desc: '锻造工具与武器,产出金属制品。', flat: false, w: 2, h: 2, statLevel: 1, statHp: 130, statYield: { metal: 2 } },
+ { id: 'grocery', cat: 'build', icon: 'assets/buildings/spring/grocery/grocery_l.png?v=5', name: '杂货铺', desc: '交易日用物资的小型商铺,促进经济流通。', flat: false, w: 2, h: 2, statLevel: 1, statHp: 90, statYield: { coin: 2 } },
+ { id: 'temple', cat: 'build', icon: 'assets/buildings/spring/temple/temple_l.png?v=4', name: '神庙', desc: '供奉信仰的场所,提升居民精神状态与领地声望。', flat: false, w: 3, h: 3, statLevel: 1, statHp: 160, statYield: { prestige: 3 } },
+ { id: 'clinic', cat: 'build', icon: 'assets/buildings/spring/clinic/clinic_l.png?v=5', name: '医务室', desc: '诊治伤病,恢复居民生命值。', flat: false, w: 2, h: 2, statLevel: 1, statHp: 100, statYield: { heal: 2 } },
+ { id: 'restaurant', cat: 'build', icon: 'assets/buildings/spring/restaurant/restaurant_l.png?v=4',name: '酒馆', desc: '烹制料理,为居民提供饱食与心情加成。', flat: false, w: 2, h: 3, statLevel: 1, statHp: 95, statYield: { satiety: 3 } },
+ { id: 'pasture', cat: 'business', icon: 'assets/buildings/spring/pasture/pasture_l.png?v=8', name: '牧场', desc: '放养牲畜,稳定产出肉奶类资源。', flat: false, w: 4, h: 4, statLevel: 1, statHp: 105, statYield: { meat: 2, milk: 1 } },
+ { id: 'blackmarket', cat: 'build', icon: 'assets/buildings/spring/blackmarket/blackmarket_l.png?v=7',name:'商城', desc: '灰色交易点,可换取稀有物资但伴随风险。', flat: false, w: 2, h: 2, statLevel: 1, statHp: 80, statYield: { rare: 1 } },
{ id: 'farmland', cat: 'business', icon: 'assets/buildings/spring/farmland/farmland.png', name: '农田', desc: '春季播种的耕地,定期产出粮食作物。', flat: true, w: 2, h: 2, statLevel: 1, statHp: 60, statYield: { food: 3 } },
{ id: 'well', cat: 'build', icon: 'assets/buildings/default/props/well_l.png', name: '水井', desc: '汲取地下水的圆井,保障饮水与灌溉。', flat: false, w: 2, h: 2, statLevel: 1, statHp: 90, statYield: { water: 2 } },
- { id: 'school', cat: 'build', icon: 'assets/buildings/spring/school/school_l.png', name: '学堂', desc: '授业解惑之所,研读典籍提升领地科研与基础教学产出。', flat: false, w: 2, h: 2, statLevel: 1, statHp: 100, statYield: { research: 3, prestige: 1 } },
- { id: 'library', cat: 'build', icon: 'assets/buildings/spring/library/library_l.png', name: '图书馆', desc: '收藏典籍与卷轴,提升领地科研与知识产出。', flat: false, w: 2, h: 2, statLevel: 1, statHp: 110, statYield: { research: 4 } },
- { id: 'barracks', cat: 'build', icon: 'assets/buildings/spring/barracks/barracks_l.png', name: '兵营', desc: '训练士兵与储备武备的军事建筑,提升领地军事产出。', flat: false, w: 2, h: 2, statLevel: 1, statHp: 130, statYield: { military: 4 } },
- { id: 'guild', cat: 'build', icon: 'assets/buildings/spring/guild/guild_l.png', name: '公会', desc: '冒险者与住民集结之所,可发布委托与招募成员。', flat: false, w: 2, h: 2, statLevel: 1, statHp: 140, statYield: { prestige: 2, coin: 1 } },
- { id: 'village', cat: 'build', icon: 'assets/buildings/spring/village/village_l.png', name: '村庄', desc: '族群聚落的核心,提升人口上限与基础产出。', flat: false, w: 2, h: 2, statLevel: 1, statHp: 150, statYield: { population: 6, food: 1 } },
+ { id: 'school', cat: 'build', icon: 'assets/buildings/spring/school/school_l.png?v=4', name: '学堂', desc: '授业解惑之所,研读典籍提升领地科研与基础教学产出。', flat: false, w: 3, h: 2, statLevel: 1, statHp: 100, statYield: { research: 3, prestige: 1 } },
+ { id: 'library', cat: 'build', icon: 'assets/buildings/spring/library/library_l.png?v=5', name: '图书馆', desc: '收藏典籍与卷轴,提升领地科研与知识产出。', flat: false, w: 2, h: 3, statLevel: 1, statHp: 110, statYield: { research: 4 } },
+ { id: 'barracks', cat: 'build', icon: 'assets/buildings/spring/barracks/barracks_l.png?v=6', name: '兵营', desc: '训练士兵与储备武备的军事建筑,提升领地军事产出。', flat: false, w: 3, h: 3, statLevel: 1, statHp: 130, statYield: { military: 4 } },
+ { id: 'guild', cat: 'build', icon: 'assets/buildings/spring/guild/guild_l.png?v=4', name: '公会', desc: '冒险者与住民集结之所,可发布委托与招募成员。', flat: false, w: 2, h: 2, statLevel: 1, statHp: 140, statYield: { prestige: 2, coin: 1 } },
+ { id: 'village', cat: 'build', icon: 'assets/buildings/spring/village/village_l.png?v=4', name: '村庄', desc: '族群聚落的核心,提升人口上限与基础产出。', flat: false, w: 3, h: 3, statLevel: 1, statHp: 150, statYield: { population: 6, food: 1 } },
// 生物分类:9 种族角色(点击进入"点地面放置"模式,不进入建筑模式)
{ id: 'race_human', cat: 'bio', icon: 'assets/characters/human/human_thumb.png', name: '人族', isChar: true, race: 'human' },
{ id: 'race_demon', cat: 'bio', icon: 'assets/characters/demon/demon_thumb.png', name: '妖族', isChar: true, race: 'demon' },
@@ -3280,13 +3280,8 @@ function startMicroRender() {
const center = microCellToScreen(b.i + ew / 2, b.j + eh / 2);
microCtx.save();
microCtx.translate(center.x, center.y);
- // 每个已放置素材都描 footprint 菱形外框(让玩家一眼看清占据范围 / 边界),
- // 道路与地面贴图本身就是地面纹理,不再额外画边框避免双层线。
- if (it.cat !== 'road' && it.cat !== 'ground') {
- microCtx.strokeStyle = 'rgba(255,213,79,0.55)';
- microCtx.lineWidth = 1.5;
- microIsoFootprintStroke(microCtx, ew, eh, g.cell);
- }
+ // 已放置素材不再常驻 footprint 菱形外框,避免遮挡建筑底部、影响视觉干净度。
+ // 玩家仍可通过 hover 看到白+橙色高亮框,建造预览时也有绿/红合法性外框。
microDrawPlaced(microCtx, b, it, g.cell, ew, eh);
microCtx.restore();
});
@@ -5752,7 +5747,7 @@ function microRenderBuildPanel() {
});
const items = visibleInCat(microBuildCat);
gridEl.innerHTML = items.length ? items.map(it => {
- const isImg = typeof it.icon === 'string' && /\.(png|webp|jpg|jpeg)$/i.test(it.icon);
+ const isImg = typeof it.icon === 'string' && /\.(png|webp|jpg|jpeg)(\?.*)?$/i.test(it.icon);
const ico = isImg ? `
` : `${it.icon}`;
return `